有没有一种方法来为通用模板指定默认类型?
假设我有一Monkey
堂课。猴子可以生活在不同的Environment
s中,比如Jungle
或Zoo
:
public class Monkey<T extends Environment>
{
T home;
...
public T getHome()
{
return home;
}
}
有没有一种方法来指定默认的T
,所以我可以使用类型Monkey
而不是Monkey<?>
没有得到编译器警告?
换句话说,是否有办法摆脱“原始类型”警告而不必明确地禁止它?
发布于 2018-03-05 11:54:08
不,你不能那样做。通用参数没有默认值。您可以重新组织您的类型层次结构,以便使GenericMonkey和DefaultMonkey将泛型参数设置为所需的默认值。
发布于 2018-03-05 13:32:21
不可以:http : //en.wikipedia.org/wiki/Comparison_of_Java_and_C%2B%2B
泛型类型参数不能有默认参数。
怎么样做这样的事情:
public class Monkey extends Monkey<YourType>
显然你会“浪费”继承的能力。
另一个事情是做我的建议,
public class Monkey<T> extends Monkey
在这种情况下,所有泛型类Monkey都继承了Monkey,在某些情况下,这是一件非常有趣的事情(特别是当您注意到某些实例方法适用于所有类而不需要泛型时)。这种方法在Castle ActiveRecord中使用(我已经看到它在C#中使用,而不是在Java中),并且我觉得它很漂亮。
https://stackoverflow.com/questions/-100007509
复制相似问题