当前位置:首页 » 编程语言 » 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);

}
}
热点内容
锐捷源码 发布:2025-03-18 03:26:55 浏览:435
诉讼中止裁定后可否解压 发布:2025-03-18 03:24:51 浏览:128
sqlserver全文搜索 发布:2025-03-18 03:23:58 浏览:715
u盘里面文件夹没有了 发布:2025-03-18 03:22:19 浏览:229
华为p系列手机哪个配置好 发布:2025-03-18 03:20:13 浏览:621
易语言连接access数据库 发布:2025-03-18 03:12:48 浏览:660
苗木源码 发布:2025-03-18 03:12:38 浏览:747
oracle卸载数据库 发布:2025-03-18 03:05:15 浏览:46
编译时生成固件怎么办 发布:2025-03-18 03:04:30 浏览:707
c语言breakcontinue 发布:2025-03-18 02:52:41 浏览:163