Javaベース強化の反射
3390 ワード
//
Class cls = Class.forName("cn.java_01.fanshe.Persion");
System.out.println(cls);
// .class
Class persionClass = Persion.class;
//System.out.println(persionClass);
// .getclass
Persion persion = new Persion();
Class aClass = persion.getClass();
//System.out.println(aClass);
//
//System.out.println(cls==persionClass);
//System.out.println(cls==aClass);
//System.out.println(persionClass==aClass);
//
Field[] fields = cls.getFields();// punlic
for (Field f : fields) {
System.out.println(f);
}
Field[] declaredFields = cls.getDeclaredFields();//
for (Field d:declaredFields) {
System.out.println(d);
}
//
Field name1 = cls.getDeclaredField("name");
name1.setAccessible(true);
System.out.println("==============="+name1);
// Field name2 = cls.getField("name");
// name2.setAccessible(true);
// System.out.println("**************"+name2);
//
Constructor[] constructors = cls.getConstructors();
Constructor constructor = cls.getConstructor(String.class, int.class);
System.out.println(constructor);
//
Object zs = constructor.newInstance("zs", 23);
System.out.println(zs.toString());
Object o = cls.newInstance();//
System.out.println(o.toString());
//
constructor.setAccessible(true);
//
//Method method = cls.getMethod();
System.out.println("------------------ public --------------------------");
Method[] methods = cls.getMethods();
for (Method m :methods) {
System.out.println(m);
System.out.println(m.getName());
}
System.out.println("------------------ public --------------------------");
//
Method eat_method = cls.getMethod("eat");
//
Persion p = new Persion();
eat_method.invoke(p);
Method eat = cls.getMethod("eat", String.class);
eat.invoke(p," ");
//
String name = cls.getName();
System.out.println(name);
Package aPackage = cls.getPackage();
System.out.println(aPackage);
public static void main(String[] args) throws Exception {
//
// Properties properties = new Properties();
// //
// ClassLoader classLoader = AnLi.class.getClassLoader();
// InputStream resourceAsStream = classLoader.getResourceAsStream("pro.properties");
// properties.load(resourceAsStream);
//
// //
String className = properties.getProperty("className");
String methodName = properties.getProperty("methodName");
//
Class cla = Class.forName(className);
Object obj = cla.newInstance();
//
Method method = cla.getMethod(methodName);
method.invoke(obj);
}