當前位置:首頁 » 編程語言 » 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);

}
}
熱點內容
安卓手機wf沒網怎麼回事 發布:2025-08-24 05:07:08 瀏覽:973
一直叫痛ftp 發布:2025-08-24 04:42:33 瀏覽:504
更新數據的sql命令是 發布:2025-08-24 04:42:02 瀏覽:405
安卓桌面百度有料廣告如何取消 發布:2025-08-24 04:41:52 瀏覽:107
暮色森林伺服器我的世界 發布:2025-08-24 04:40:26 瀏覽:717
演算法即是 發布:2025-08-24 04:37:37 瀏覽:360
時間壓縮包 發布:2025-08-24 04:22:04 瀏覽:73
如何不記住密碼 發布:2025-08-24 04:13:06 瀏覽:669
odex反編譯工具 發布:2025-08-24 04:02:15 瀏覽:708
php寫網頁 發布:2025-08-24 04:00:03 瀏覽:984