首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java:如何在SomeClass <T>中设置“T”的默认值?

Java:如何在SomeClass <T>中设置“T”的默认值?
EN

Stack Overflow用户
提问于 2018-03-05 03:34:39
回答 2查看 0关注 0票数 0

有没有一种方法来为通用模板指定默认类型?

假设我有一Monkey堂课。猴子可以生活在不同的Environments中,比如JungleZoo

代码语言:javascript
复制
  public class Monkey<T extends Environment>
    {
        T home;
        ...

        public T getHome()
        {
            return home;
        }  
    }

有没有一种方法来指定默认的T,所以我可以使用类型Monkey而不是Monkey<?>没有得到编译器警告?

换句话说,是否有办法摆脱“原始类型”警告而不必明确地禁止它?

EN

回答 2

Stack Overflow用户

发布于 2018-03-05 11:54:08

不,你不能那样做。通用参数没有默认值。您可以重新组织您的类型层次结构,以便使GenericMonkey和DefaultMonkey将泛型参数设置为所需的默认值。

票数 0
EN

Stack Overflow用户

发布于 2018-03-05 13:32:21

不可以:http : //en.wikipedia.org/wiki/Comparison_of_Java_and_C%2B%2B

泛型类型参数不能有默认参数。

怎么样做这样的事情:

代码语言:javascript
复制
public class Monkey extends Monkey<YourType>

显然你会“浪费”继承的能力。

另一个事情是做我的建议,

代码语言:javascript
复制
public class Monkey<T> extends Monkey

在这种情况下,所有泛型类Monkey都继承了Monkey,在某些情况下,这是一件非常有趣的事情(特别是当您注意到某些实例方法适用于所有类而不需要泛型时)。这种方法在Castle ActiveRecord中使用(我已经看到它在C#中使用,而不是在Java中),并且我觉得它很漂亮。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档