美文网首页
java基础类-6-反射

java基础类-6-反射

作者: 宠辱不惊的咸鱼 | 来源:发表于2019-10-01 09:17 被阅读0次

常用类

java.lang.Class;                
java.lang.reflect.Constructor; 
java.lang.reflect.Field;        
java.lang.reflect.Method;
java.lang.reflect.Modifier;

获取类类型

Class c1 = Class.forName("Employee");   

Class c2 = Employee.class;  

Employeee = new Employee();  
Class c3 = e.getClass();

创建对象

Class c =Class.forName("Employee");  
Objecto = c.newInstance(); // 调用了Employee的无参构造方法

获取属性

Class c = Class.forName("java.lang.Integer");
Field[] fs = c.getDeclaredFields();
StringBuffer sb = new StringBuffer();
sb.append(Modifier.toString(c.getModifiers()) + " class " + c.getSimpleName() +"{\n");
for(Field field : fs) {
    sb.append("\t");
    sb.append(Modifier.toString(field.getModifiers())+" ");
    sb.append(field.getType().getSimpleName() + " ");
    sb.append(field.getName()+";\n");
}
sb.append("}");
System.out.println(sb);

获取特定属性

User u = new User();
u.age = 12;
System.out.println(u.age);

Class c = Class.forName("User");
Field idF = c.getDeclaredField("id");
Object o = c.newInstance();
idF.setAccessible(true); // 使用反射机制可以打破封装性,导致了java对象的属性不安全
idF.set(o, "110");
System.out.println(idF.get(o));

方法和构造方法

reflection-001.jpg
Class aClass = ... // obtain class object
Constructor[] constructors = aClass.getConstructors();
Constructor constructor = aClass.getConstructor(new Class[]{String.class}); // 参数不匹配,NoSuchMethodException
Class[] parameterTypes = constructor.getParameterTypes();

Constructor constructor = MyObject.class.getConstructor(String.class);
MyObject myObject = (MyObject) constructor.newInstance("constructor-arg1");

相关文章

  • java基础类-6-反射

    常用类 获取类类型 创建对象 获取属性 获取特定属性 方法和构造方法

  • Java基础:反射

    反射注解动态代理相关阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 ...

  • Java基础:类加载器

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 什么是类加...

  • Java基础:注解

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 概述 注解...

  • Java基础:动态代理

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 概述 在运行时,...

  • Java 高级基础——反射

    Java 高级基础——反射 反射的意义:Java 强类型语言,但是我们在运行时有了解、修改信息的需求,包括类信息、...

  • JAVA反射机制详解

    1.理解反射的基础:Class类 众所周知Java有个Object 类,是所有Java 类的继承根源,其内声明了数...

  • 学习路线

    Java Se基础 Java基础语法、数组、类与对象、继承与多态、异常、范型、集合、流与文件、反射、枚举、自动装箱...

  • JAVA 大数据学习路线

    Java基础 多线程 (多了解java.util.conconrrent包的类) 集合框架 IO 反射(如何实现根...

  • Java基础之反射

    Java基础之—反射(非常重要)Java中反射机制详解Java进阶之reflection(反射机制)——反射概念与...

网友评论

      本文标题:java基础类-6-反射

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