您的位置:首页 > 其它

个人日记2017.08.12

2017-08-12 15:36 176 查看
反射:
public class User {
public String name;
private int age;

public User(String name, int age) {
this.name = name;
this.age = age;
}

public User() {
}

private void run() {
System.out.println("我会跑");
}

private void run(String name) {
System.out.println(name + "我会跑");
}

public void say() {
System.out.println("我会说话");
}

public static void main(String[] args) throws ClassNotFoundException,
NoSuchFieldException, SecurityException, NoSuchMethodException,
IllegalAccessException, IllegalArgumentException,
InvocationTargetException, InstantiationException {
// 加载这个类的class文件
Class c = Class.forName("com.sxt.User");
// 创建一个实例化的对象
User u = (User) c.newInstance();
// 类的全路径
System.out.println(c.getName());
// 类的名称
System.out.println(c.getSimpleName());
// 返回类的权限
System.out.println(Modifier.toString(c.getModifiers()));
// 判断是否是接口
System.out.println(c.isInterface());
// 拿到父类的全称
System.out.println(c.getSuperclass().getName());
// 父类的名字
System.out.println(c.getSuperclass().getSimpleName());
// 获取类中的public的属性
Field f = c.getField("name");
System.out.println(f.getName());
// 获取所有权限类型的属性
Field age = c.getDeclaredField("age");
System.out.println(age.getName());

// 获取所有public的属性
Field[] fs = c.getFields();
// 获取所有类型的所有属性
Field[] dfs = c.getDeclaredFields();
System.out.println(dfs.length);
System.out
.println("======================================================");
// 获取所有公共方法包含父类和接口
Method[] ms = c.getMethods();
for (Method m : ms) {
System.out.println(m.getName());
}
System.out
.println("======================================================");
// 通过方法名获取公共方法
Method m = c.getMethod("say");
System.out.println(m.getName());
System.out
.println("======================================================");
// 获取所有本类的方法
Method[] bms = c.getDeclaredMethods();
for (Method bm : bms) {
System.out.println(bm.getName());
}
System.out
.println("======================================================");
// 通过名字获取本类的方法
Method bm = c.getDeclaredMethod("run");
System.out.println(bm.getName());
// 调用本类的带参数的方法
Method cm = c.getDeclaredMethod("run", String.class);
cm.invoke(u, "张三");
}

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