静态变量 静态代码块
- 不能定义静态泛型变量
- 静态方法不能使用/访问泛型类中的泛型,应该将该方法定义为泛型方法
public class Test<T> {
public static T name; //error
public T sex ;
static {
T ab; //error
}
}
- 泛型存在的意义就是为了动态指定具体类型,增强灵活性和通用性
- 静态和动态之分就在于静态是编译时类型,动态是运行时类型。
- Java中的静态变量和静态代码块是在类加载的时候就执行的
- 实例化对象时,先声明并实例化变量再执行构造函数
- 即变量在实例化前已经被加载了
静态申明与非静态申明的生命周期不同
静态方法
public class Test<T> {
public static void main(String[] args) {
}
//泛型方法
public T demo1(T t) {
return t;
}
//静态方法使用泛型参数
public static T demo2(T t) { return t;} //error
//定义泛型静态方法
public static <T> ResponseBean<T> error(String msg, T data) {
return new ResponseBean<>(200, data, msg);
}
}
-
静态方法不能访问类中定义的泛型,如果静态方法中数据类型不确定,可以在方法上定义泛型。
-
即上例中
<T>
就是声名一个泛型T,为定义该方法所拥有的泛型标识符,之后两个T是在使用泛型T。