![](/img/trans.png)
[英]Is it possible to use generic method without passing the type in parameters in java
[英]How to use Generic methods without passing Type Parameters when calling the generic method?
我可以在腦海中理解和想象它是如何工作的:
public static void main(String[] args) {
String passString = foo("hello");
Integer passInteger = foo(5);
}
public static <K> K foo(K k) {
return k;
}
很好,編譯器知道K在第一種情況下是String,在第二種情況下是Integer,因為在調用foo時我們將對象作為參數傳遞。
但是我不明白這是如何工作的:
public static void main(String[] args) {
HashMap<Integer, String> myMap
= newInstance();
myMap.put(1, "Hello");
}
public static <K,V> HashMap<K,V> newInstance() {
return new HashMap<K, V>();
}
編譯器實際上檢查我將myMap分配給什么嗎? 這里有某種隱藏的演員嗎? 也許我缺少明顯的東西,但是在編譯時如何將K和V解析為Integer和String?
編譯器實際上檢查我將myMap分配給什么嗎?
是的,這就是它的作用。 這稱為目標類型推斷或“目標類型”。
值得注意的是,Java 8中改進了javac
進行此類推斷的能力-現在,您需要提供顯式類型見證人的地方越來越少(例如Collections.<String>emptySet()
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.