0

首先,我有以下课程:

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 ();}

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...
}
4

3 回答 3

0

这个:

System.out.println(new Pair <String, Integer>(), 10);

不起作用,因为没有println采用 2 个参数的重载方法...

你的意思是肯定的

    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));
于 2017-06-13T19:26:57.890 回答
0

不确定您是否编写了 pair 类,但第一个问题是您的 print 语句没有正确声明 pair。如果您没有默认构造函数,您实际上必须向它发送实际值。尝试类似:

System.out.println(new Pair <String, Integer>("example", 1));
于 2017-06-13T19:27:46.300 回答
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));
于 2017-06-13T19:32:26.747 回答