反射编程

一 枚举类型
不能被继承其他类和被继承,被 enum 关键字修饰
枚举定义
public enum signallamp{
RED,
GREEN,
BLUE;
}
正常的枚举的变量应该大写
枚举常用的方法
public final int compareTo(E o)比较两个枚举值的大小。小于负数 大于正数 等于返回0
public final String name()获取枚举名称的字符串形式
public final int ordinal()获取枚举所在集合中位置的索引
public static E[] values()获取所有枚举数组形式
public static E valuesOf(String name)根据参数选取枚举对象
举例子
signllamp [] sign = signllamp.values();
for()
{
e.name();
e.ordinal();可以得到名字和编号;
}
二 反射编程
java.lang.Class 字节码类型
java.lang.reflect.Constructor 构造器类型
java.lang.reflect.Method 方法类型
java.lang.reflect.Field 属性类型
java.lang.reflect.Modifier访问修饰符类型

反射编程实例

使用字节码对象获取关于这个类的对象实例
Class <?> stuclass = Class.forName("com.szit.entity.Student");
Student stu = (Student)stuClass.newInstance();

获取名字 stu.getName();
获取访问级别 stu.getModifiers(); 可以相匹配的级别 可以用 Modidier.PUBLIC等表示

查看可获取的公共级别的属性(public).以数组形式返回
Field [] fields = stu.getFields();
获取所有访问级别的属性
stu.getDeclaredFields(); 使用.length属性 可以查看长度;

获取类的构造器
例如 类中 有一个 构造器
public void student(String name, integer max)
则 获取方式为
Constructor con0 = stu.gerConstructor(String.class,Integer.class) 如果为无参数的构造器则为 Constructor con0 = stu.gerConstructor();
Constructor 不能实例化 但是可以通过 Class实例获得一个Constructor实例;
获取 类中定义的方法,以数组形式储存 包含父类的方法;
Method [] med = stu.getMethods();

posted on 2020-06-05 23:54  苏阔Garrison  阅读(183)  评论(0编辑  收藏  举报

导航