簡體   English   中英

Java中的泛型方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM