Java中反射与泛型基本介绍和用法

1、Java反射

Java反射详细介绍
通过java语言中的反射机制可以操作字节码文件(可以读和修改字节码文件。)
通过反射机制可以操作代码片段。(class文件。)

1、获取Class的三方式:

  • Class.forName(“完整类名带包名”)
  • 对象.getClass()
  • 任何类型.class

2、常用方法:

  • newInstance():实例化对象
  • getFields():获取所有公共的public修饰的方法,包括父类的方法
  • getDeclaredFields():获取所有本类声明的方法,包括private修饰的,但是不包含父类的方法。
  • getFields(String name) 获取某一个公共的public修饰的方法,包括父类的方法
  • getDeclaredField(String name) 获取某一个本类声明的方法,包括private修饰的,但是不包含父类的方法。
// 提升反射性能,关闭安全检查
field.setAccessible(true);

值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查;实际上setAccessible是启用和禁用访问安全检查的开关,并不是为true就能访问为false就不能访问 ;
由于JDK的安全检查耗时较多.所以通过setAccessible(true)的方式关闭安全检查就可以达到提升反射速度的目的

// 属性赋值
field.set(object类, object属性值);
public <T> PageRsp<T>  getPage( Class<T> cls){
}

2、Java泛型

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。

泛型的本质是参数化类型,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法

1、如何使用泛型
泛型有三种使用方式,分别为:泛型类、泛型接口和泛型方法。

// 泛型类
public class 类名 <泛型类型1,...> {
    
}
// 泛型方法
public static <T,V> String get(T t,V v){
}

public <T,V> String get(T t,V v){
}
// 泛型接口
public interface get<K,V>{ }
在定义泛型类型Pair<T>的时候,也可以使用extends通配符来限定T的类型:

public class Pair<T extends Number> { ... }

2、命名规范

  • T:任意类型 type
  • E:集合中元素的类型 element
  • K:key-value形式 key
  • V: key-value形式 value

版权声明:本文为weixin_44183847原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。