Java 扩展最终类的泛型类型

Java 扩展最终类的泛型类型,java,Java,在java中,最终类不能被普通类扩展,但泛型类型可以被扩展。这意味着什么?例如,Integer是JavaAPI中的最后一个类。这个类不能扩展,但下面的代码没有显示任何错误 public class SampleClass<T extends Integer> { // memebers } 公共类SampleClass{ //成员 } 虽然代码没有显示错误,但是类型参数T的任何实际绑定都必须是一个整数,因为正如您正确指出的那样,整数是一个最终的类。泛型类型参数虽然使用了exte

在java中,最终类不能被普通类扩展,但泛型类型可以被扩展。这意味着什么?例如,Integer是JavaAPI中的最后一个类。这个类不能扩展,但下面的代码没有显示任何错误

public class SampleClass<T extends Integer> {

// memebers

}
公共类SampleClass{
//成员
}

虽然代码没有显示错误,但是类型参数
T
的任何实际绑定都必须是一个
整数
,因为正如您正确指出的那样,
整数
是一个
最终的
类。泛型类型参数虽然使用了
extends
关键字,但没有定义实际的类;因此,您发布的代码中没有错误。

尽管代码没有显示错误,但是类型参数
T
的任何实际绑定都必须是一个
整数
,因为正如您正确指出的,
整数
是一个
最终类。泛型类型参数虽然使用了
extends
关键字,但没有定义实际的类;因此,您发布的代码中没有错误。

这是因为编译器希望
T
类型为
Integer
或从
Integer
派生的类型

由于
Integer
final
类,
T
只能是
Integer

只有当您试图从
Integer

例如,编译器将在此处抛出错误:

class IncompilableInteger extends Integer { }
因为它正试图从
Integer
创建一个类型,但这不会:

class Compilable <T extends Integer> { }
类可编译{}

因为它试图创建一个包含对象的类型类型-要么是
整数
,要么是从
整数
派生的类型,但本身不是不同的
整数

这是因为编译器希望
T
属于
整数
类型,或者是从
整数
派生的类型

由于
Integer
final
类,
T
只能是
Integer

只有当您试图从
Integer

例如,编译器将在此处抛出错误:

class IncompilableInteger extends Integer { }
因为它正试图从
Integer
创建一个类型,但这不会:

class Compilable <T extends Integer> { }
类可编译{}
因为它试图创建一个类型,该类型包含类型为的对象-要么是
整数
,要么是从
整数
派生的类型,但本身不是不同的
整数