2010-05-05 105 views
2

我想做的線沿線的東西:Java:是否有可能只有需要比較類型的泛型類?

public class MyClass<T implements Comparable> { 
    .... 
} 

但我不能,因爲,很顯然,非專利藥只接受與子類的限制,而不是接口。

重要的是我能夠比較班內的類型,所以我應該如何去做這件事?理想情況下,我可以保持泛型的類型安全,而不必將T轉換爲Object,或者不需要編寫大量的代碼。換句話說,最簡單的就是更好。

回答

7

implements是錯誤的。它只接受extendssuper。你可以在這裏使用extends

public class MyClass<T extends Comparable<T>> { 
    // ... 
} 

要了解更多關於泛型,你可能會發現this tutorial (PDF)有用。

+0

Java的語法在這裏有點不一致。如果泛型是原始設計的一部分,那麼可能不會有'implements'關鍵字。 – Henning 2010-05-06 10:21:02

1

也適用於您必須使用的接口擴展。所以你的情況這將是:

public class MyClass<T extends Comparable<T>> { 
.... 
} 
+0

我覺得應該是'>',你錯過了一個括號。 – 2010-05-06 00:11:12

+0

啊是的。謝謝! – Prine 2010-05-06 10:10:12

3

做到這一點的最好辦法是:

public class MyClass<T extends Comparable<? super T>> { 
    .... 
} 

如果你只是做<T extends Comparable<T>>,那麼就不會可比類的子類的工作。

相關問題