Java声明的仅类型参数字符串
我有一个类,根据定义,它只能与字符串参数一起工作 所以我想用Java声明的仅类型参数字符串,java,generics,Java,Generics,我有一个类,根据定义,它只能与字符串参数一起工作 所以我想用 class MyClass<T extends String> class-MyClass 但是编译器会给出一个警告,字符串是final,我不能扩展它 当时用 class MyClass<String> class-MyClass 并收到警告,因为参数字符串正在隐藏类字符串 我该怎么办?多亏了这句启发性的评论:“你真的需要泛型吗?” 我检查了我的代码,发现了问题。我想使用一个类型参数,因为我正在用它实现
class MyClass<T extends String>
class-MyClass
但是编译器会给出一个警告,字符串是final,我不能扩展它
当时用
class MyClass<String>
class-MyClass
并收到警告,因为参数字符串正在隐藏类字符串
我该怎么办?多亏了这句启发性的评论:“你真的需要泛型吗?” 我检查了我的代码,发现了问题。我想使用一个类型参数,因为我正在用它实现一个接口
interface MyInterface<T>
接口MyInterface
出于某种原因,我认为在实现类中需要类型参数,比如:
class MyClass<String> implements MyInterface<T>
类MyClass实现MyInterface
但这没有道理。我需要做的是:
class MyClass implements MyInterface<String>
类MyClass实现MyInterface
已解决:)在我看来,您根本不需要泛型。如果不需要,您不应该过度复杂化代码。如果您的类应该只使用字符串参数,只需省略泛型部分 因此,不是:
class MyClass<T extends String> {
T myMethod() {
//...
}
//...
}
你真的需要一个泛型类型吗?好问题:)现在我的问题解决了。我将编辑我的帖子来解释在第二个示例中,您正在创建一个名为
String
的类型参数。您没有创建仅限于String
s的类型参数。事实上,第二个示例中的类型参数可以有任何值。您想做什么?定义接受字符串的构造函数或方法。
class MyClass {
String myMethod() {
//...
}
//...
}