0

Java のジェネリックを理解するために、次のコードを書きました。

myBox問題は、それが受け入れられるようにどのようにパラメータ化する必要があるFilterType <?> myFilterTypeかです。


public class Generics {

    /**
     * @param args
     */
    public static void main(String[] args) {

        Generics g = new Generics();
        Object myValue = "putThisIntoTheBox";

        FilterType<?> myFilterType3   = g.new FilterType<>(null); //works
        Box myBox3                      = g.create(myFilterType3, myValue); //fails - create won't accept myFilterType3
    }

    public <T> Box<T> create(FilterType<T> type, T value) {
        return new Box<T>(value);
    }

    //CLASSES

    public class FilterType<T>{
        T type;
        public FilterType(T type) {
            this.type = type;
        }
    }

    public class Box<T>{
        T value;
        public Box(T value) {
            this.value = value;
        }
    }

}
4

1 に答える 1

1

問題は、メソッドがパラメータの一貫した型をcreate期待していることです。FilterType<T> typeT value

ここでは、値がインスタンスとして宣言されているObjectため、タイプTジェネリックもオブジェクトインスタンスであることが期待されます。

宣言FilterType<Object> myFilterType3することで問題は解決します。

于 2013-01-31T10:51:29.673 に答える