如何从.class文件或.java文件中读取类的信息

时间:2023-02-16 19:30:19
假定已经可以读出某个文件夹下所有.class文件(或者.java),怎样建立这些类的实例?

26 个解决方案

#1


假定你原来的类是 Demo.java
那么在现在的类里就用
Demo dm = new Demo();


就实列化了

#2


比如说,知道 d:\workspace\reflect\src\car.java和d:\workspace\reflect\bin\car.class
怎样使用car这个类

#3


用import引进来...当然,你需要打一个jar包或者把源文件引入项目喵~~`

#4


你可以直接在现有项目下把原来的类文件拷过来就可以
然后在需要使用该类的地方时,实列化这个类就可以了

用import的话就 需要打一个jar包了
然后在工程的属性里 引入该架包 

#5


我要处理的类有很多,导入之后也不可能一个一个的输入类名,有没有解决的办法?

#6


用import把源文件(.java)导进你的工程里,就可以直接car创建实例
或者导入.jar包(.class)

#7


如果你用的IDE是 eclipse的话
你可以用 导出 功能
那些类导出为一个jar文件
然后在现有的工程属性里导人这些jar文件
然后在需要用到的时候直接import就可以了

#8


6楼的说的比较正确  

#9


有没有方法可以读出一个包内的所有类名,存到一个String数组里

#10


Class.forName("要实例化的类的路径").newInstance();
LZ是这个意思不?

#11


同意10楼..用反射

#12


可能的专门写一个读取一个文件夹里的所有java文件并分析出类名

#13


ClassLoader 里有个 defineClass 方法

#14


同意火龙果的

#15


你是想做插件?
既然已经获取了全部文件名 那就等于获取了 类名
(对象类型)(Class.forName(对象名称["类的完整包名称+类的名称"]).newInstance())

#16


方法 defineClass 
       该方法接受由原始字节组成的数组并把它转换成 Class 对象。原始数组包含如从文件系统或网络装入的数据

#17


用IO类 或者import

#18


引用 3 楼 cangyue87 的回复:
用import引进来...当然,你需要打一个jar包或者把源文件引入项目喵~~`

#19


我应该叫 牟~~~

#20


一个类的实例!~~~~

反射行不行????

#21


引用 15 楼 KK3K2005 的回复:
你是想做插件? 
既然已经获取了全部文件名 那就等于获取了 类名 
(对象类型)(Class.forName(对象名称["类的完整包名称+类的名称"]).newInstance()) 

#22


LZ需要的应该是JAVA的反射机制吧..

#23


你好,请问是做J2EE开发的吗,交个朋友!!!

#24


不是很明白lz的意思,但是我想用反射的话应该更好些

#25


不是你是否定义了一个抽象类,然后要实例化他,如果这样,那么可以用工厂模式设计

#26


应该使用13楼所说的:使用ClassLoader加载已经读取的.class文件字节码

#1


假定你原来的类是 Demo.java
那么在现在的类里就用
Demo dm = new Demo();


就实列化了

#2


比如说,知道 d:\workspace\reflect\src\car.java和d:\workspace\reflect\bin\car.class
怎样使用car这个类

#3


用import引进来...当然,你需要打一个jar包或者把源文件引入项目喵~~`

#4


你可以直接在现有项目下把原来的类文件拷过来就可以
然后在需要使用该类的地方时,实列化这个类就可以了

用import的话就 需要打一个jar包了
然后在工程的属性里 引入该架包 

#5


我要处理的类有很多,导入之后也不可能一个一个的输入类名,有没有解决的办法?

#6


用import把源文件(.java)导进你的工程里,就可以直接car创建实例
或者导入.jar包(.class)

#7


如果你用的IDE是 eclipse的话
你可以用 导出 功能
那些类导出为一个jar文件
然后在现有的工程属性里导人这些jar文件
然后在需要用到的时候直接import就可以了

#8


6楼的说的比较正确  

#9


有没有方法可以读出一个包内的所有类名,存到一个String数组里

#10


Class.forName("要实例化的类的路径").newInstance();
LZ是这个意思不?

#11


同意10楼..用反射

#12


可能的专门写一个读取一个文件夹里的所有java文件并分析出类名

#13


ClassLoader 里有个 defineClass 方法

#14


同意火龙果的

#15


你是想做插件?
既然已经获取了全部文件名 那就等于获取了 类名
(对象类型)(Class.forName(对象名称["类的完整包名称+类的名称"]).newInstance())

#16


方法 defineClass 
       该方法接受由原始字节组成的数组并把它转换成 Class 对象。原始数组包含如从文件系统或网络装入的数据

#17


用IO类 或者import

#18


引用 3 楼 cangyue87 的回复:
用import引进来...当然,你需要打一个jar包或者把源文件引入项目喵~~`

#19


我应该叫 牟~~~

#20


一个类的实例!~~~~

反射行不行????

#21


引用 15 楼 KK3K2005 的回复:
你是想做插件? 
既然已经获取了全部文件名 那就等于获取了 类名 
(对象类型)(Class.forName(对象名称["类的完整包名称+类的名称"]).newInstance()) 

#22


LZ需要的应该是JAVA的反射机制吧..

#23


你好,请问是做J2EE开发的吗,交个朋友!!!

#24


不是很明白lz的意思,但是我想用反射的话应该更好些

#25


不是你是否定义了一个抽象类,然后要实例化他,如果这样,那么可以用工厂模式设计

#26


应该使用13楼所说的:使用ClassLoader加载已经读取的.class文件字节码