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 には 2 つのパラメーターがあり、LinkedHashMap を拡張します。

public class MapData <K, V> extends LinkedHashMap <K, V>

クラスには 1 つのコンストラクターがあります。

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

および1つの方法(この方法がアダプターのように機能することを理解する方法):

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(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 に答える
0

これ:

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

2つの引数を取るオーバーロードされたメソッドがないため、機能していませんprintln...

あなたは確かに意味します

    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 に答える