2012-05-20 21 views
2

我有一个类,它应该只根据定义使用String参数。只声明类型参数的Java字符串

所以我想过使用

class MyClass<T extends String> 

但那么编译器会发出警告该字符串是终局的,我不能延长它

class MyClass<String> 

然后尝试和得到因为参数String正在隐藏类String的警告。

我该怎么办?

+7

你真的需要一个*通用*类型吗? – BalusC

+0

好问题:)现在我的问题解决了。我将编辑我的帖子以解释 – Ixx

+1

在第二个示例中,您将创建一个名称为“String”的类型参数。您不*创建一个仅限于'String'的类型参数。事实上,第二个示例中的类型参数可以具有任何值。 – Jeffrey

回答

3

感谢有启发性的评论:“你真的需要泛型”吗?

我检查了我的代码,发现问题。我想用,因为我实现一个接口类型参数有一个

interface MyInterface<T> 

出于某种原因,我想我需要的那种类型放慢参数的实现类,如:

class MyClass<String> implements MyInterface<T> 

但是,没有意义。我需要做的是:

class MyClass implements MyInterface<String> 

解决:)

2

在我看来,你并不需要仿制药在所有。如果你不需要,你不应该过分复杂你的代码。如果您的班级只能使用字符串参数工作,只需省略通用部分。

因此,而不是:

class MyClass<T extends String> { 
    T myMethod() { 
    //... 
    } 
    //... 
} 

只要做到:

class MyClass { 
    String myMethod() { 
    //... 
    } 
    //... 
}