我是Java的新手,遇到了一些我无法理解的代码 这是一些方法声明:
public <V> void method(Map<T,V>)
我在java中读过关于Generics的内容,但找不到任何关于 public <V> void
的描述
任何人都可以解释这是什么意思吗?
答案 0 :(得分:4)
这是一种通用方法。它定义了一个名为<V>
的方法范围类型。
此外,它使用可能具有类范围的类型<T>
。
例如,假设你有这个类,通过某种类型<T>
进行参数化。
public class Something<T> {
private T key;
public Something(T key) {
this.key = key;
}
public <V> V getValueForKey(Map<T, V> map) {
return map.get(key);
}
}
getValueFromKey()
方法定义<V>
类型,它将返回提供的Map中的对象,该对应于key
成员。只是为了澄清:为了提供一个很好的例子,我使用的返回类型将是<V>
而不是void
,但这并不重要。
所以,例如,如果你有:
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("One", 1);
map.put("Two", 2);
Something<String> something = new Something<String>("One");
Integer value = something.getValueForKey(map);
然后getValueForKey()
将返回Integer
,因为这是提供的Map
中的值类型。
答案 1 :(得分:0)
Map<T, V>
包含T
类型的键和类型V
的值。该方法必须知道调用时哪种类型T
和V
。接触调用方法的实例已经给出T
,但V
未知。因此,public <V> void method
表示调用者在调用方法时必须提供V
的类型。