有没有办法为通用模板指定默认类型?
假设我有一Monkey堂课.猴子可以住在不同的EnvironmentS,如Jungle或Zoo:
public class Monkey<T extends Environment>
{
T home;
...
public T getHome()
{
return home;
}
}
有没有办法为其指定默认值T,所以我可以使用该类型Monkey而不是Monkey<?>获取编译器警告?
编辑
换句话说,有没有办法摆脱"原始类型"警告而不必明确压制它?
不,你不能:http: //en.wikipedia.org/wiki/Comparison_of_Java_and_C%2B%2B
通用类型参数不能具有默认参数.
制作这样的东西怎么样:
public class Monkey extends Monkey<YourType>
Run Code Online (Sandbox Code Playgroud)
很可能你会"浪费"继承的能力.
编辑1: 另一个有趣的事情是反过来我的建议,
public class Monkey<T> extends Monkey
Run Code Online (Sandbox Code Playgroud)
在这种情况下,所有泛型类Monkey都继承了Monkey,在某些情况下,这是一个非常有趣的事情(特别是当你注意到某些实例方法适合所有类而不需要泛型时).这种方法在Castle ActiveRecord中使用(我已经看过它在C#中使用,而不是在Java中使用),我发现它很漂亮.
| 归档时间: |
|
| 查看次数: |
21966 次 |
| 最近记录: |