为什么这段代码不能编译?
public class Wrapper<T> extends T {}
是因为这在语义上从来都不是一个正确的设计选择吗?或者由于某种类型的歧义,这实际上不能用任何语言编译?
我想你可以用它来创建一个 public class Persistent<T> extends T {}
例如,它允许您扩展 T
具有一些功能来序列化 T
到字节数组并将其存储在磁盘上,同时仍然允许 Persistent<T>
的实例传递给仅采用 T
类型值的函数.
因此这是可能的:
编辑:这是不可能的,因为 load()
可能没有合理的实现(正如 michid
正确指出的那样)。不过,为了不破坏他的评论,我将其留在这里。
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);
最佳答案
当您扩展
一个类时,您通过父类(super class)提供的一些附加功能来扩展现有功能。当父类(super class)是T
时,它可以是任何东西,但你不知道是什么。那么你如何扩展你一无所知的东西呢?
关于java - 为什么 Java 不允许扩展类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61295661/