
首先分为两个包,一个是 com.test.properties
这个包里猜竖 有两个迟宴类:一个是
Property,代码穗旦大如下:
package com.test.properties
public class Property {
public void run() {
System.out.println("run invoke!!")
}
}
还有一个是TestProperty测试用的,
代码如下:
package com.test.properties
import java.io.File
import java.io.FileInputStream
import java.io.InputStream
import java.lang.reflect.Method
import java.net.URL
import java.util.Properties
public class TestProperty {
public static void main(String[] args) throws Exception {
URL url = TestProperty.class.getResource("/")
String basePath = url.getPath().substring(1)
String path = basePath + "properties/class.properties"
InputStream input = new FileInputStream(new File(path))
Properties ps = new Properties()
ps.load(input)
String cPath = ps.getProperty("Property")
Class<?>pClass = Class.forName(cPath)
Object instance = pClass.newInstance()
Method[] methods = pClass.getDeclaredMethods()
for(Method m : methods){
m.invoke(instance, new Object[]{})
}
}
}
还有一个包是 :
properties包,
有个 属性文件:
class.properties
内容如下:
Property=com.test.properties.Property
这是全部测试数据。希望能帮到你
//Test.javaimport java.util.*
import java.io.*
import java.lang.reflect.*
public class Test {
public static void main(String[] args) throws Exception {
InputStream in = Test.class.getClassLoader().getResourceAsStream("prop.properties")
Properties pro = new Properties()
pro.load(in)
in.close()
String className = pro.getProperty("class")
Class c = Class.forName(className)
Object o = c.newInstance()
Method m = c.getMethod("run")
m.invoke(o)
}
}
//Demo.java
public class Demo {
public void run() {
System.out.println("run() method has been invoked")
}
}
//prop.properties
class=Demo
第一种:通过forName()方法;第二种:类.class;
第三种:对象.getClass()。
举例如下:
package
test
public class Demo{
public static void
main(){
Class<?>c1 = null
Class<?>c2 =
null
Class<?>c3 =
null
//三种反射用实例化方式
try{
//最常用的一种形式
c1 =
Class.forName("test.X")
}catch(ClassNotFoundException
e){
e.printStackTrace()
}
//通过Object类中的方法实例化
c2
= new X().getClass()
//通过类.class实例化
c3 =
X.class
System.out.println("类名:" + c1.getName())
//得到类名
System.out.println("类名:" + c2.getName())
/侍枣/得到类名
仿谈瞎 System.out.println("类名:" + c3.getName())
//得到备空类名
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)