@thatmaniscool

Конструкция SomeInterfacesomeObj — как правильно использовать?

Прежде всего я имею следующий класс:
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 ();
}

Так же имею класс с расширением LinkedHashMap
import java.util.*;
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(MapData.map(new Pair<String, Integer>(), 10), 10); // Не работает...
	}
}

Не могу понять, как передать аргумент в метод MapData.map ().
Книга Thinking in Java 4th, page 592 - 597
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 2
@onepavel
Консультация и разработка мобильных приложений
кодить не читая книги - зло!
package com.company;

import java.util.LinkedHashMap;

public class Main {

    public static void main(String[] args) {
        MapData<String,Integer> mapData = MapData.map(new Zoidberg(), 10);
        System.out.print("");
    }
}

class Pair <K, V> {
    public K key;
    public V value;

    public Pair (K key, V value){
        this.key = key; this.value = value;
    }
}

interface Generator <T> {
    public T next ();
}

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

class Zoidberg implements Generator<Pair<String,Integer>> {

    @Override
    public Pair<String, Integer> next() {
        return new Pair<String, Integer>("i_will_read_books", 10);
    }
}
Ответ написан
Комментировать
Наверное, как-то так: System.out.println(MapData.map(new Generator(), 10));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы