當前位置:首頁 » 編程語言 » java獲取類的方法

java獲取類的方法

發布時間: 2023-08-15 21:31:16

java中怎樣獲取一個類的所有子類

1、面向對象思想的繼承是子類繼承父類,父類被其它子類繼承在JAVA虛擬機的容器中並沒有直接介面獲取;

2、如果是在一個項目內獲取父類的子類繼承情況,參考這個代碼:

packagefind;

importjava.io.File;
importjava.io.IOException;
importjava.net.URL;
importjava.util.ArrayList;
importjava.util.List;

importfind.test.Intf;
importfind.test.Man;

publicclassClassUtil{
publicstaticvoidmain(String[]args){
try{
System.out.println("介面實現類:");
for(Class<?>c:getAllAssignedClass(Intf.class)){
System.out.println(c.getName());
}
System.out.println("子類:");
for(Class<?>c:getAllAssignedClass(Man.class)){
System.out.println(c.getName());
}
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

/**
*獲取同一路徑下所有子類或介面實現類
*
*@paramintf
*@return
*@throwsIOException
*@throwsClassNotFoundException
*/
publicstaticList<Class<?>>getAllAssignedClass(Class<?>cls)throwsIOException,
ClassNotFoundException{
List<Class<?>>classes=newArrayList<Class<?>>();
for(Class<?>c:getClasses(cls)){
if(cls.isAssignableFrom(c)&&!cls.equals(c)){
classes.add(c);
}
}
returnclasses;
}

/**
*取得當前類路徑下的所有類
*
*@paramcls
*@return
*@throwsIOException
*@throwsClassNotFoundException
*/
publicstaticList<Class<?>>getClasses(Class<?>cls)throwsIOException,
ClassNotFoundException{
Stringpk=cls.getPackage().getName();
Stringpath=pk.replace('.','/');
ClassLoaderclassloader=Thread.currentThread().getContextClassLoader();
URLurl=classloader.getResource(path);
returngetClasses(newFile(url.getFile()),pk);
}

/**
*迭代查找類
*
*@paramdir
*@parampk
*@return
*@throwsClassNotFoundException
*/
privatestaticList<Class<?>>getClasses(Filedir,Stringpk)throwsClassNotFoundException{
List<Class<?>>classes=newArrayList<Class<?>>();
if(!dir.exists()){
returnclasses;
}
for(Filef:dir.listFiles()){
if(f.isDirectory()){
classes.addAll(getClasses(f,pk+"."+f.getName()));
}
Stringname=f.getName();
if(name.endsWith(".class")){
classes.add(Class.forName(pk+"."+name.substring(0,name.length()-6)));
}
}
returnclasses;
}
}

Ⅱ Java靜態方法獲取所屬類的信息

靜態方法method(),只能把屬性也要設置成static的,才能訪問到你的屬性
但是你的目的:在方法體內部想獲取當前所屬類的類型信息
建議你可以這樣:舉個小例子
class
demo
{
private
int
num;
public
demo(){}
public
int
getNum()
{
return
this.num;
}//這個方法就很輕松的獲取你的屬性的信息;
}
o(∩_∩)o...希望你明白...

Ⅲ java 獲取對象的數據類型的方法

使用getClass方法可以獲取一個對象的類型類,然後在調用該類的方法可以獲取該類的相關信息,比如父類的名字,該類的名字等等:

packagetest;

importjava.lang.reflect.Field;
importjava.lang.reflect.Method;


publicclassDemo2{
Stringusername="sss";
publicstaticvoidmain(String[]args),IllegalAccessException,NoSuchFieldException,SecurityException,NoSuchMethodException{

Demo2t=newDemo2();
if(Demo2.class==t.getClass()){
System.out.println("equal");
}

//獲取類名
System.out.println(t.getClass().getName());
//獲取父類名
System.out.println(t.getClass().getSuperclass());
//獲取類中某個屬性
Fieldf=t.getClass().getField("username");
//獲取類中某個方法
Methodm=t.getClass().getDeclaredMethod("main",String[].class);

}
}
熱點內容
oracle卸載資料庫 發布:2025-03-18 03:05:15 瀏覽:44
編譯時生成固件怎麼辦 發布:2025-03-18 03:04:30 瀏覽:703
c語言breakcontinue 發布:2025-03-18 02:52:41 瀏覽:161
伺服器雲主機改成雲電腦 發布:2025-03-18 02:46:11 瀏覽:422
php環境的搭建 發布:2025-03-18 02:44:47 瀏覽:489
java實現文件上傳到ftp 發布:2025-03-18 02:43:25 瀏覽:401
編程出遊戲 發布:2025-03-18 02:43:15 瀏覽:178
使用公網ip搭建伺服器 發布:2025-03-18 02:34:23 瀏覽:215
android從程序員到架構師之路 發布:2025-03-18 02:32:52 瀏覽:298
高壓存儲罐 發布:2025-03-18 02:23:18 瀏覽:760