Java泛型问题

Java泛型问题,java,generics,Java,Generics,我将放弃这段话:我不喜欢Java泛型。。。在获取具有该枚举名称的系统属性时,我尝试返回该枚举的值,如中所示: enum E { A, B } ... E mode = GetEnumProperty("mode", E.A); 其中GetEnumProperty是: static <T> T GetEnumProperty(String propName, T extends Enum<T> defaultValue) { if (System.getPrope

我将放弃这段话:我不喜欢Java泛型。。。在获取具有该枚举名称的系统属性时,我尝试返回该枚举的值,如中所示:

enum E { A, B }
...
E mode = GetEnumProperty("mode", E.A);
其中GetEnumProperty是:

static <T> T GetEnumProperty(String propName, T extends Enum<T> defaultValue)
{
    if (System.getProperty(propName) != null) {
        return Enum.valueOf(defaultValue.getClass(), System.getProperty(propName));
    } else {
        return defaultValue;
    }
}
static T GetEnumProperty(字符串propName,T扩展枚举默认值)
{
if(System.getProperty(propName)!=null){
返回Enum.valueOf(defaultValue.getClass(),System.getProperty(propName));
}否则{
返回默认值;
}
}

谢谢

您需要一些泛型背景-这里是基本泛型

密集但有用的白皮书-


看起来您想要的是:

public类GenericEnum{
静态T GetEnumProperty(字符串propName,T defaultValue)
{
if(System.getProperty(propName)!=null){
返回(T)Enum.valueOf(defaultValue.getClass(),System.getProperty(propName));
}否则{
返回默认值;
}
}
请注意,泛型类型T在方法声明中的指定方式发生了变化。在参数列表中使用它之前,需要声明类型T扩展了Enum


还要注意铸件(T)在第一个回复声明中。

你可能想更具体地说明你在这里提出的问题。永远不要放弃!仿制药需要脑汁,但它是可行的:)请补充更多信息,你对你的问题不是很清楚。没有时间去洗手间,罗布?:)不。说真的,10分钟是很长的时间。如果你放弃了在你的问题上注明日期,以提出比“帮助”更重要的问题你可能已经得到我的重新投票了。这是一个评论而不是答案。叹息。我想帮助通用反馈!是的,我来自C++,我读了两遍泛型教程,我仍然认为java泛型完全吸吮。java泛型99%是吸吮,不是完全的。让我们精确地说。当然,我会同意你:t工作得很好,尽管有一个“未经检查的演员”警告。。。