为什么此代码无法编译?
public class Wrapper<T> extends T {}
是因为从语义上讲,这永远不是一个正确的设计选择?还是由于某种类型的歧义而在物理上不能以任何语言编译?
我想您可以使用它来创建一个public class Persistent<T> extends T {}
,它允许您例如通过一些功能扩展T
以将T
序列化为字节数组并将其存储在磁盘上,同时仍然允许实例Persistent<T>
的值传递给原本只会采用T
类型的值的函数。
因此,这是可能的:
Integer i1 = Integer.valueOf(5);
Persistent<Integer> i2= new Persistent<Integer>();
i2.load(i1) //example method to load i1 into i2, basically serializing it
List<Integer> myIntegers = new ArrayList<>();
famousPeople.add(i1);
famousPeople.add(i2);
当您extend
一个类时,您将通过超类提供的一些附加功能来扩展现有功能。当超类为T
时,它可以是任何东西,但您不知道什么。那么,您将如何扩展您一无所知的东西?