您的位置:首页 > 编程语言 > Java开发

Java反射小练习

2016-11-27 19:25 316 查看
package Administrate;

public class okjbvc {
private String name;
private int age;
private String G;
public okjbvc(){
}
private okjbvc(String name,int age,String G){
setName(name);
setAge(age);
setG(G);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getG() {
return G;
}
public void setG(String g) {
G = g;
}
}


package Administrate;

import java.io.File;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.String;
import java.util.Calendar;

import javax.activation.FileDataSource;

public class Test {
public static void main(String[] args){
Class cla;
try {
/*okjbvc ok=new okjbvc();//第一种写法
Class cla=ok.getClass();*/
//第二种写法:根据class路径获取
cla = Class.forName("Administrate.okjbvc");
//获取该类所有属性
Field[] field = cla.getDeclaredFields();
System.out.println("属性");
for (Field F : field) {
System.out.println(F);
}
System.out.println("set/get封装");
//获取该类所有set/get封装
Method[] Method = cla.getDeclaredMethods();
for (Method M : Method) {
System.out.println(M);
}
System.out.println("构造方法");
//获取该类所有构造方法
Constructor[] Constructor = cla.getDeclaredConstructors();
for (Constructor C : Constructor) {
System.out.println(C);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Class cla1=Class.forName("Administrate.okjbvc");
Constructor Const=cla1.getDeclaredConstructor(String.class,int.class,String.class);
Const.setAccessible(true);//如果该方法是private,true是变为public,flase是改为private
okjbvc ok=(okjbvc)Const.newInstance("你我他",88,"岁");
System.out.println(ok.getName()+ok.getAge()+ok.getG());

okjbvc o = new okjbvc();
Field Field=cla1.getDeclaredField("name");
Field.setAccessible(true);
Field.set(o, "你我他");
System.out.println(o.getName());

Method ME=cla1.getMethod("setName", String.class);
ME.invoke(o, "oo");
System.out.println(o.getName());

} catch (ClassNotFoundException e) {
System.out.println("找不见的类路径");
e.printStackTrace();
} catch (NoSuchMethodException e) {//调用不到方法
e.printStackTrace();
} catch (SecurityException e) { //安全异常
e.printStackTrace();
} catch (InstantiationException e) {//实例化异常
e.printStackTrace();
} catch (IllegalAccessException e) {//非法访问异常
e.printStackTrace();
} catch (IllegalArgumentException e) {//非法论点异常
e.printStackTrace();
} catch (InvocationTargetException e) {//调用目标异常
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java