首页 > 解决方案 > Java 将通配符转换为模板类型

问题描述

import com.google.common.collect.Multimap;
import java.util.Collection;

public class GenericsTest {

    private final Multimap<String, Box<?>> boxMultimap;

    public GenericsTest(Multimap<String, Box<?>> boxMultimap) {
        this.boxMultimap = boxMultimap;
    }

    public <T> Collection<Box<T>> get(final String boxType) {
        final Collection<Box<T>> boxes = boxMultimap.get(boxType);

        return boxes;
    }
}

盒子:

public class Box<T> {
    // T stands for "Type"
    private T t;

    public void set(T t) { this.t = t; }
    public T get() { return t; }
}

对于这个特定的示例方法,我将如何boxMultimap.get(boxType);转换为类型。以上无法从多地图中检索。<T>get

以下工作正常:

public class GenericsTest {

    private final Multimap<String, Box> boxMultimap;

    public GenericsTest(Multimap<String, Box> boxMultimap) {
        this.boxMultimap = boxMultimap;
    }

    public <T> Collection<Box<T>> get(final String boxType) {
        final Collection boxes = boxMultimap.get(boxType);

        return boxes;
    }
}

但我想明确说明本地框集合变量 ( final Collection<Box<T>> boxes = boxMultimap.get(boxType);)。

标签: javagenerics

解决方案


推荐阅读