Java核心技术_笔记5-3

1.枚举类
public enum Size{
SMALL,MEDIUM,LARGE,EXTRA_LARGE
};
定义一个类,其中有4个实例

2.在枚举类中添加 构造器、方法、域
public enum Size{
SMALL(1),MEDIUM(2),LARGE(3),EXTRA_LARGE(4)

private int a;
private Size(int input){
a=input;
}
public void geta(){System.out.print(a)}
}

Size.SMALL.geta()显示1
Size.SMALL.toString()显示SMALL
Size s = Enum.valueOf(Size,class , ” SMALL ” )
Size[] values = Size.values()

3.能够分析类能力的程序称为反(reflective)

4.获取class方法
Fuck fuck;
Class c1=fuck.getClass()

forName获得类名对应的Class对象
Class c2= Class.forName(“Fuck”) ;

Class c3= Fuck.class;

5.java.lang.reflect包中有三个类
Field Method Constructor
分别用于描述
类的域 方法 构造器

6.
Class c;
获得类中 公有 的域、方法、构造体
Field[] f=c.getFields();
Method[] m=c.getMethods();
Constructor[] c=c.getConstructors();

获得类中 全部 的域、方法、构造体
Field[] f=c.getDeclaredFields();
Method[] m=c.getDeclaredMethods();
Constructor[] c=c.getConstructors();

获得类中 指定名字 的域、方法、构造体
Field f=c.getDeclaredField(“fuck”);
Method m=c.getDeclaredMethod(“Fuck_you”);
Constructor c=c.getConstructor(“Fuck”);

7.反射机制的默认行为受限于 Java 的访问控制 。
设置f.setAccessible(true);可访问私有域
提取对象F中变量为fuck的(域),并输出
Field f=c.getDeclaredField(“fuck”);
Object v=f.get(F);
System.out.println(v);

8.Arrays.copyOf() 扩展数组时,自动返回Object类型
若要变为自己合适的类型
用Object newArray = Array.newlnstance ( componentType , newLength ) ;
System.arraycopy(a,0,newArray,0Math.min(length,newLength ) );拷贝

9.
得到c类中Fuck_you的方法
Method m=c.getDeclaredMethod(“Fuck_you”);
在对象p中进行Fuck_you方法
m.invoke(p);

猜你喜欢

转载自blog.csdn.net/Matrix576/article/details/82418568