反射机制
Posted tanlei-sxs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反射机制相关的知识,希望对你有一定的参考价值。
概述
主要是指程序可以访问,检测和修改它本身状态和行为的一种能力
运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法
对于任意一个对象,都能够调用它的 任意一个方法
这种动态获取的信息及动态调用对象的方法的功能称为java的 反射机制
为什么要用反射机制,直接创建对象不就可以了?这就涉及到了动态与静态的概念
静态编译:在编译时确定类型,定对象
动态编辑:在运行时确定类型,绑定对象
功能
在运行时判断任意一个对象所属的类(instanceof)
在运行时构造一个类的对象
在运行时判断任意一个类所具有的成员变量和方法
在运行时调用任意一个对象的方法
Class对象
要想操纵类中的属性和方法,都必须从获取Class对象开始
//1.对象名.getclass()方法 Employee employee=new Employee("tanlei", 20); Class<?> class1=employee.getClass(); System.out.println(class1.getTypeName()); //2.类名.class Class<?>class2=Employee.class; //3.使用class.forName() try { Class.forName("com.iotek.classtype.Employee"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } //4.获取基本数据类型的Class对象 Class<?>class3=int.class; //5.通过基本数据类型包装类来获取对应的基本数据类型所对应的class对象 Class<?>class4=Integer.TYPE;
package com.iotek.classtype; public class classDemo { public static void main(String[] args) { //1.对象名.getclass()方法 Employee employee=new Employee("tanlei", 20); //class类 Class<?> class1=employee.getClass(); System.out.println(class1.getTypeName()); //获得父类 System.out.println(class1.getSuperclass()); //2.类名.class Class<?>class2=Employee.class; System.out.println(class2.getTypeName()); System.out.println(class2.getSuperclass()); //3.使用class.forName() try { Class.forName("com.iotek.classtype.Employee"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(class2.getTypeName()); System.out.println(class2.getSuperclass()); //4.获取基本数据类型的Class对象 Class<?>class3=int.class; System.out.println(class3.getTypeName()); System.out.println(class3.getSuperclass().getName()); //5.通过基本数据类型包装类来获取对应的基本数据类型所对应的class对象 Class<?>class4=Integer.TYPE; System.out.println(class4.getTypeName()); System.out.println(class4.getSuperclass().getName()); } } class Employee{ private String name; private int age; public Employee(String name, int age) { this.name = name; this.age = age; } 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; } }
以上是关于反射机制的主要内容,如果未能解决你的问题,请参考以下文章