Java Store Specifi c Тип класса в HashMap - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь реализовать интерфейс командной строки, где вы можете искать товары на рынке.

Для обеспечения нескольких торговых площадок я реализовал интерфейс Marketplace. Я планирую иметь карту ha sh, которая отображает имя торговой площадки (например, Amazon) на класс, реализующий интерфейс Marketplace.

public interface Marketplace {

    static ArrayList<Product> searchForProduct(String productName) {
        throw new IllegalStateException("searchForProduct hasn't been defined");
    };

    static ArrayList<Listing> getListings(Product product) {
        throw new IllegalStateException("getListings hasn't been defined");
    }
}

Как бы я go рассказал о сохранении класса, реализующего класс marketplace внутри карты ha sh в качестве значения, а затем получить этот класс из карты ha sh и вызвать один из методов stati c?

1 Ответ

3 голосов
/ 02 марта 2020

Я думаю, вы хотите что-то вроде этого:

Map<String, Class<? extends Marketplace>> descriptionsToClasses = new HashMap<>();

descriptionsToClasses.put("Amazon Marketplace", Amazon.class);

И, наконец, для вызова методов stati c:

Class<? extends Marketplace> marketplaceClass = descriptionsToClasses.get("Amazon Marketplace");
Method staticSearchMethod = marketplaceClass.getMethod("searchForProduct", String.class);
staticSearchMethod.invoke(null, "foo");

Убедитесь, что метод stati c вы Вызывающий виден в области видимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...