我有一个类,它应该只根据定义使用String参数。只声明类型参数的Java字符串
所以我想过使用
class MyClass<T extends String>
但那么编译器会发出警告该字符串是终局的,我不能延长它
与
class MyClass<String>
然后尝试和得到因为参数String正在隐藏类String的警告。
我该怎么办?
我有一个类,它应该只根据定义使用String参数。只声明类型参数的Java字符串
所以我想过使用
class MyClass<T extends String>
但那么编译器会发出警告该字符串是终局的,我不能延长它
与
class MyClass<String>
然后尝试和得到因为参数String正在隐藏类String的警告。
我该怎么办?
感谢有启发性的评论:“你真的需要泛型”吗?
我检查了我的代码,发现问题。我想用,因为我实现一个接口类型参数有一个
interface MyInterface<T>
出于某种原因,我想我需要的那种类型放慢参数的实现类,如:
class MyClass<String> implements MyInterface<T>
但是,没有意义。我需要做的是:
class MyClass implements MyInterface<String>
解决:)
在我看来,你并不需要仿制药在所有。如果你不需要,你不应该过分复杂你的代码。如果您的班级只能使用字符串参数工作,只需省略通用部分。
因此,而不是:
class MyClass<T extends String> {
T myMethod() {
//...
}
//...
}
只要做到:
class MyClass {
String myMethod() {
//...
}
//...
}
你真的需要一个*通用*类型吗? – BalusC
好问题:)现在我的问题解决了。我将编辑我的帖子以解释 – Ixx
在第二个示例中,您将创建一个名称为“String”的类型参数。您不*创建一个仅限于'String'的类型参数。事实上,第二个示例中的类型参数可以具有任何值。 – Jeffrey