黑马程序员-java基础加强-enhance2

------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! -------

知识点:枚举和反射


1.枚举类。
枚举enum,是一个类,枚举类。元素之间中逗号隔开,若末元素结尾有方法体的话分号不能省略。
为什么要有枚举呢?
枚举就是要让某种类型的取值只能为若干固定的值中的一个,否则编译器就会报错。其实就是将可能出现在运行期的错误转到了编译期,提高了程序的安全性。

2.反射机制。
反射就是把一个类的各种成份映射成相应的java类。

3.constructor类。
constructor构造器,可以通过字节码文件对象得到。
String.Class.getConstructor()。
class文件以二进制数存储在硬盘上,当虚拟机要加载.class文件时,就是一串二进制数。
也可以得到所有构造器getconstructors
得到字节码文件对象还记得有三种方式:
(1)通过对象的getClass方法得到。需要有对象实例。
Person p = new Person();
Class clazz = p.getClass();
(2)通过类(Object)的静态属性Class方法得到。需要有具体的类名。
Class clazz = Person.Class;
(3)通过class的forName方法。只需要有一个字符串。
Class clazz = Class.forName("Person");

得到该类的构造器后可以newInstance。
class>>>constructor>>>Object

4.编译期和运行期。
程序在编译器只进行语法的检查,所以通过一个类的构造器得到的对象要赋给指定的类型时,要强转。虽然构造器是通过
指定的类型得到的,还是要强转,因为编译器只检查语法错误的,不执行等号右边的语句。

5.class里面的newInstance和constructor里面的newInstance的区别。
都是产生一个对象实例。即使没有class的newInstance方法一点也不影响语言的功能。
constructor构造器newInstance产生一个对象的过程是先获取到类的字节码文件对象,然后通过字节码文件对象获取到指定构造器,在通过构造器创造对象。
class里面的newInstance过程省略了构造器一步,直接产生对象,不能够产生带指定的参数对象。

6.字段Field的问题。
Field.get(Object);
前提是要获得字节码文件对象。
通过Class对象获取字段Person.Class.Field();
可以获取所有字段Fields
注意,这里字段Field是一个对象,是类的对象,不是哪个对象的变量。要获取某对象的字段用getField方法,参数要指定是得到哪个对象的字段。

7.英文单词。
declared,方法名中含declared的就说明可以看到类中私有属性。还不能用。
getDeclaredField();
getDeclaredConstructor();

setAccessible,暴力访问。可以用私有属性值了。

------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! -------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值