首先,我有以下课程:
public class Pair <K, V> {
public K key;
public V value;
public Pair (K key, V value){
this.key = key; this.value = value;
}}
和界面:
public interface Generator <T> {
public T next ();}
Class MapData有两个参数,并扩展了LinkedHashMap。
public class MapData <K, V> extends LinkedHashMap <K, V>
班级有一个结构者:
public MapData (Generator <Pair<K, V>> gen, int size){
for (int i=0; i!=size; i++){
Pair <K, V> p = gen.next();
put (p.key, p.value);
}}
和一种方法(我如何理解这种方法就像适配器一样):
public static <K, V> MapData <K, V> map (Generator <Pair<K, V>> gen, int size){
return new MapData (gen, size);
}
所以...我想知道如何正确使用这种结构? 例如:
public static void main (String [] args){
System.out.println(new Pair <String, Integer>(), 10); // Doesn't work at all...
}
答案 0 :(得分:0)
这样:
System.out.println(new Pair <String, Integer>(), 10);
不是workng,因为没有重载方法println
采用2个args ...
你的意思是肯定的
String key = "myString";
int value = 121;
System.out.println(new Pair<>(key, value));
或旧的Java版本
String key = "myString";
int value = 121;
System.out.println(new Pair<String, Integer>(key, value));
答案 1 :(得分:0)
不确定你是否编写了对类,但第一个问题是你的print语句没有正确地声明一对。如果您没有默认构造函数,您实际上必须发送实际值。尝试类似:
System.out.println(new Pair <String, Integer>("example", 1));
答案 2 :(得分:0)
这样的事情:
System.out.println(map(new Generator<Pair<String, Integer>>() {
public Pair<String, Integer> next() {
// generate a new Pair as you see fit, for example
return new Pair<String, Integer>("foo", 0);
}
}, 10));