[英]Generics methods in Java
我的問題是:是否有可能制作一種通用方法,我可以使用2種不同的類型? 例如整數和字符串。
這沒有實際用途,但我想知道它是否可行。 如果是的話,怎么樣? :)
你不需要為此使用泛型。 您可以重載方法。 例如
public void method(Integer i){}
public void method(String s){}
如果用一個整數調用方法,那么它將調用第一個方法。 如果用字符串調用它,它將調用第二種方法。
大概你的意思是兩種不同類型的參數?
您可以對String參數使用一種方法,而另一種方法則使用整數並將其傳遞給String版本。
示例類型不是好的,因為它們是最終的。 這意味着您不能使用它們來限制泛型參數,因為沒有任何東西可以從它們繼承。
所以對於那些類型,答案是否定的。
但是我們可以用Java做的是:
您可以創建一個接受對象類型的方法。
public <T> void doStaff(T obj) {
}
您可以創建一個限制為CharSequence的方法,因為String是final
public <T extends CharSequence> void doStaff(T str){
}
您可以創建一個方法,使其更適合一個接口
public <T extends CharSequence & Comparable<T>> void doStaf(T interf) {
}
但即使有這么多可能性,我們也無法創建一個對兩個不相關類型有效的泛型參數。 這沒有意義。 通用類型的主要任務是提供類型安全。 通常當我們使用它們時,我們應該使用接口而不是類。
如果您希望您的方法接受Integer和String,請嘗試以下方法:
public class Test {
public static void main(String[] a) {
method(new String(),new Integer("2"));
}
public static <T extends String, U extends Integer> void method(T t, U u){
}
}
編輯:
如果您希望您的方法采用一個帶有String或Integer的參數
試試這個 :
public static <T extends Comparable<T>> void method(T t){
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.