美文网首页Java基础
2018-07-16-Java反射

2018-07-16-Java反射

作者: 王元 | 来源:发表于2019-07-29 23:33 被阅读0次

** Java反射总结**

1,反射获取类的class对象的方式

Class<Student> c1 = (Class<Student>) stu1.getClass();
            
Class<Student> c2 = Student.class;

Class<Student> c = (Class<Student>) Class.forName("com.reflex.Student");

2,证明在运行期间,一个类,只有一个Class对象产生

System.out.println("是否c1=c2" + (c1 == c2));
System.out.println("是否c=c1" + (c == c1));

3,通过class对象获取类的实例

Student stu = c.newInstance();  

4,获取类的私有变量

Field f = c.getDeclaredField("name");

5,允许通过反射访问字段

f.setAccessible(true);

6,给字段赋值

f.set(stu, "刘德华");

7,获取类的构造函数并初始化该类

Constructor<Student> constructor = c.getDeclaredConstructor(String.class);
Student student = constructor.newInstance("aaaa");

String.class是构造参数

8,获取类方法并执行方法

Method method = c.getDeclaredMethod("setName", String.class);
method.invoke(stu, "zzz");  

Method getName = c.getDeclaredMethod("getName");
String name = (String) getName.invoke(stu);

9,通过反射越过泛型检查

List<?> list = stu.getList();
Class<?> listClass = list.getClass();
Method listAdd = listClass.getDeclaredMethod("add", Object.class);
listAdd.invoke(list, 100);
System.out.println("list设置=" + list.get(0));

10,通过使用配置文件,反射给对象赋值

10.1,新建文件setting.txt

className=com.reflex.Student
methodName=setCourseName

10.2 获取配置文件中的数据

private static String getProperty(String key) throws IOException {
    Properties properties = new Properties();
    FileReader reader = new FileReader("setting.txt");
    properties.load(reader);
    reader.close();
    return properties.getProperty(key);
}

10.3 赋值

String className = getProperty("className");
String methodName = getProperty("methodName");

Method propertyMethod = stu.getDeclaredMethod(methodName, String.class);
Student propertyStudent = stu.newInstance();
propertyMethod.invoke(propertyStudent, "cccc");

Field teaName = stu.getDeclaredField("name");
teaName.setAccessible(true);

相关文章

  • 2018-07-16-Java反射

    ** Java反射总结** 1,反射获取类的class对象的方式 2,证明在运行期间,一个类,只有一个Class对...

  • Java基础之反射

    Java基础之反射 反射基本介绍 反射的使用通过反射调用属性和方法通过反射获取配置文件 反射基本介绍 Java反射...

  • 镜面反射矩阵的推导

    镜面反射是以镜面作为反射平面,实物与反射物到反射平面的距离相等,实物与反射物方向相反,所以,反射矩阵由反射平面确定...

  • reflect.go包学习_之二 指针操作提高反射性能 反射应用

    reflect.go包学习_之二 指针操作提高反射性能 反射应用 反射创建实例 反射信息、反射调用方法、反射修改值...

  • Java互联网公司-经典面试题附答案

    基础:Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?优点:反射具有解耦性,缺点:反射属...

  • Java反射与joor反射库的使用

    java原生反射的使用 反射构造对象 反射方法 反射字段 joor反射库的使用 github:https://gi...

  • Java反射

    什么是反射? 反射的作用? 反射性能优化?

  • 反射三定律

    反射第一定律:反射可以将interface类型变量转换成反射对象 反射第二定律:反射可以将反射对象还原成inter...

  • 反射

    1.反射是什么?反射的定义,概念 2.为什么要学反射? 3.怎么使用反射?反射的使用

  • 一周岁前做好两件事,孩子就不会语言迟缓,保证口齿伶俐

    与语言发展相关的原始反射有四个:张口反射、足跖反射、抓握反射和手拉反射,每个反射的发生、发展和整合都是次第进行的,...

网友评论

    本文标题:2018-07-16-Java反射

    本文链接:https://www.haomeiwen.com/subject/pvswrctx.html