反射的原理及效率低的原因
[TOC]
Java反射原理JVM类加载的时候会通过一个类的全限定名去获取类的二进制字节流,最后会在内存中生成该类的Class对象
而反射就是拿到这个Class对象就等于拿到了这个对象的全部信息。
反射为什么效率低
Method#invoke 方法会对参数做封装和解封操作
我们可以看到,inv ...
反射的理解、缺点
[TOC]
反射介绍Java的反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够去调用它的任意一个属性和方法;这种动态获取对象信息、调用对象方法的功能就是 反射。
反射的优缺点
优点:运行期类型的判断,动态加载类,提高代码的灵活度
缺点:
安全问 ...
对于封装、继承、多态的理解
对于封装、继承、多态的理解
抽象类和接口的区别?
抽象类和接口的区别?
抽象类里子类继承用extends,而接口用implements(实现)
抽象类只能继承一次,但是接口可以实现多个
抽象类关键字是 abstract,接口关键字是 interface
抽象类可以有普通方法,构造方法,抽象方法,而接口只能是抽象方法
抽象类被 ...
成员变量与局部变量的区别有哪些?
成员变量与局部变量的区别有哪些?
从语法形式上看:成员变量是属于类的,而局部变量是在代码块或方法中定义的变量或是方法的参数;成员变量可以被 public,private,static 等修饰符所修饰,而局部变量不能被访问控制修饰符及 static 所修饰;但是,成员变量和局部变量 ...
String不可变的好处
String不可变的好处
1. 便于实现String常量池只有当字符串是不可变的,字符串池才有可能实现。字符串池的实现可以在运行时节约很多heap空间,因为不同的字符串变量都指向池中的同一个字符串。但如果字符串是可变的,那么String interning将不能实现(译者注:Strin ...
String、StringBuilder、StringBuffer区别
String、StringBuilder、StringBuffer区别
底层String、StringBuilder、StringBuffer都是使用的 char数组
在 Java 9 之后,String 、StringBuilder 与 StringBuffer 的实现改用 byte ...
public、default、protected和private的区别
public、default、protected和private的区别
1、private,私有的,被private修饰的类、方法、属性、只能被本类的对象所访问。
2、default,默认的,在这种模式下,只能在同一个包内访问。
3、protected,受保护的,被protected修 ...
Object类的方法
Object类的方法
123456789101112131415161718192021222324252627282930313233//native方法,用于返回当前运行时对象的Class对象,使用了final关键字修饰,故不允许子类重写。public final native Cla ...
java的泛型擦除说一下
Java的泛型擦除说一下?
Java 的泛型是伪泛型,这是因为 Java 在编译期间,所有的泛型信息都会被擦掉,这也就是通常所说类型擦除 。
如在代码中定义List<Object>和List<String>等类型,在编译后都会变成List,JVM看到的只是Li ...