2012-05-20 59 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() { 
    //... 
    } 
    //... 
}