当前位置:首页 » 编程语言 » java获取所有类

java获取所有类

发布时间: 2022-09-20 16:30:36

java怎么获取src目录下所有的包名,类名,方法名 以及通过一个类名获得该类下的所有方法名

可以使用以下代码来获取src目录下所有的包名,类名,方法名 以及通过一个类名获得该类下的所有方法名。
import java.io.File;
import java.lang.reflect.Method;
public class LoopApp {
public static void main(String[] args) throws Exception {
String packageName = "";
File root = new File(System.getProperty("user.dir") + "\\src");
loop(root, packageName);
}
public static void loop(File folder, String packageName) throws Exception {
File[] files = folder.listFiles();
for (int fileIndex = 0; fileIndex < files.length; fileIndex++) {
File file = files[fileIndex];
if (file.isDirectory()) {
loop(file, packageName + file.getName() + ".");
} else {
listMethodNames(file.getName(), packageName);
}
}
}
public static void listMethodNames(String filename, String packageName) {
try {
String name = filename.substring(0, filename.length() - 5);
Object obj = Class.forName(packageName + name);
Method[] methods = obj.getClass().getDeclaredMethods();
System.out.println(filename);
for (int i = 0; i < methods.length; i++) {
System.out.println("\t" + methods[i].getName());
}
} catch (Exception e) {
System.out.println("exception = " + e.getLocalizedMessage());
}
}
}

❷ Java 获取包所有class

既然是封到包里的,遍历确实是有点麻烦

思路如下:

  1. 输入包名

  2. 转换为资源路径名,即以‘/’替换‘.’

  3. 找到ClassLoader,并获得资源名对于的资源对象

  4. 判断资源对象是否为jar包内

4.1若否,则使用文件系统进行处理为文件夹,之后遍历名称进行类加载。这里直接使用资源路径名,会是其真实位置,不用关注因部署在tomcat上而产生的路径变化。

4.2若是,则构造一个jar文件类,使用jar操作类遍历内容,进行类加载。

实现参考(其实我只是把它的思路总结出来):http://guoliangqi.iteye.com/blog/644876

❸ 怎么得到java类下引用的所有的类

如这个类:
import java.util.*;
import java.lang.String;
public class Info {
Date date = null;
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
public List<String> getTimes(Integer in,String s){
date = new Date();
List<String> as = new ArrayList<String>();
as.add("s");
as.add("1");
return as;
}
}
我怎么得到所引用的类是:
java.util.Date,
java.util.List,
java,util.ArrayList,
java.lang.String,
java.lang.Integer;
我使用的是eclipse ast, 可以得到但是不对,比如:
得到字段申明:
1,Date date = null; //这个我只能得到类型为Date,而且不是java.util.Date,因此我无法知道,这 个Date是java.util.Date,还是java.sql.Date;
java.sql.Date sqlDate = new java.sql.Date(date.getTime()); //这个得到的类型就是直接是:java.sql.Date;
问题:请问这个应该怎么确定?
2,还有返回类型:public List<String> getTimes(Integer in,String s)。这个返回是List<String>,我这怎么确实这个带有泛型的类型?

3,还有关于注解的类型,不过注解我想一定要先引入包吧。

4,如果我在代中用到没有申明的类,应该怎么得到呢?如:
Calendar cal = Calendar.getInstance();

❹ java父类如何获得所有子类的名称

java中子类可以获取父类,是因为java语言规范强制要求所有非object类必须有父类,类在编译的时候,父类唯一确定,编译器会将父类的引用记录在class文件里面。
反过来,编译器不会给你记录子类,想要获取,只能自己根据情况实现。比如在加载一个类的时候添加判断,或者强制要求这些类满足特定的条件,通过这个条件去获取类的名称

❺ java如何通过反射获取包中所有的类

先通过IO,定位到这个包
通过File.list得到一个包含这个包下所有class的文件的数组。
循环这个数组,用包名拼接每一个遍历出来的文件的名字,得到每一个完整的类名(即,包名加类名)
通过class.forname反射得到每一个类实例

❻ java中如何通过反射获取一个.java文件中的所有类。

对象.gerClass().getName()就是了,对象时谁的,最后就是谁的全名,不会有内部类的区别
如果没有对象那就是:类名.class.getName(),不过这样是闲的无聊,有类名,再返回字符串形式的类名

❼ 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】如何 获取 抽象类的 所有实现类

一般是

父类 =new 子类。

❾ Java静态方法获取所属类的信息

静态方法method(),只能把属性也要设置成static的,才能访问到你的属性
但是你的目的:在方法体内部想获取当前所属类的类型信息
建议你可以这样:举个小例子
class
demo
{
private
int
num;
public
demo(){}
public
int
getNum()
{
return
this.num;
}//这个方法就很轻松的获取你的属性的信息;
}
o(∩_∩)o...希望你明白...

❿ java 获取所有带注解的类

既然是基于spring,可以这样:
ResourcePatternResolver rpr = new ();

Resource[] res = rpr.getResources("classpath*: **/*.class"); // classpath*:带*号会找jar中的class
然后根据resource取clas路径就行
String className = res[0].getURL().getPath();
className = className.split("(classes/)|(!/)")[1];
className = className.replace("/", ".").replace(".class", "");
Object obj = Class.forName(className);

话说我最近也在写一个这样的MVC。。要不咱两合伙? 我写的也是基于注解,不过要支持REST风格

热点内容
c语言元编程 发布:2025-01-11 09:53:02 浏览:342
线切割割圆怎么编程 发布:2025-01-11 09:52:23 浏览:171
怎么选女孩子的配置 发布:2025-01-11 09:47:33 浏览:670
python获取header 发布:2025-01-11 09:47:32 浏览:492
iis7上传大小 发布:2025-01-11 09:41:38 浏览:507
拍摄脚本是什么工作 发布:2025-01-11 09:39:12 浏览:785
魅族安卓8什么时候更新 发布:2025-01-11 09:27:58 浏览:362
电脑板我的世界登录密码多少 发布:2025-01-11 09:15:43 浏览:284
编译原理和是非终结符吗 发布:2025-01-11 09:15:42 浏览:252
网络调试助手源码 发布:2025-01-11 09:14:24 浏览:117