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() {
    //...
  }
  //...
}