首页 > 解决方案 > Java 泛型函数返回声明

问题描述

我是 Java 泛型的新手,并且已经设法让一个getKeyByValue函数与 a 一起使用HashMap<String, String>,但我不明白函数声明如何模棱两可/冗余并且仍然有效。例如,这两个声明都有效,但第一个对我来说没有多大意义:

    private <T, E> String getKeyByValue(Map<String, E> map, String value) {
        for (Entry<String, E> entry : map.entrySet()) {
            if (value.equals(entry.getValue())) {
                return entry.getKey();
            }
        }
        return null;
    }

示例<E>

    private <E> String getKeyByValue(Map<String, E> map, String value) {
        for (Entry<String, E> entry : map.entrySet()) {
            if (value.equals(entry.getValue())) {
                return entry.getKey();
            }
        }
        return null;
    }

标签: javagenerics

解决方案


您的第一个示例只是声明从未使用过的类型参数 - 您可以声明任意数量的参数!

private <T, E, F, G> String getKeyByValue(Map<String, E> map, String value) {
    for (Entry<String, E> entry : map.entrySet()) {
        if (value.equals(entry.getValue())) {
            return entry.getKey();
        }
    }
    return null;
}

推荐阅读