0

「何らかの式」を...何らかの式に置き換えてpublic void x(List<Class<some expression>> m)拡張しないクラスを渡そうとすると、メソッドがエラーをスローするようにします。class A{}

ワイルドカードを使用するか、ワイルドカードを含めない場合は常に迷惑な警告が表示されるため、使用方法について完全にベースから外れている場合でも、Class がディメンションに値する理由を理解したいと思います。

4

1 に答える 1

2

あなたのやりたいことがよくわかりません。実際、このメソッド シグネチャは次のとおりです。

public void x(List<? extends YourClass> m)

Listクラスが拡張されていないオブジェクトの を渡すと、コンパイルされませんYourClass( の代わりにそのように呼びましょうA)。

メソッドでオブジェクトxのリストをパラメーターとして取得する場合、それは別の問題です。を拡張するクラスのオブジェクトの をClass渡すだけでよろしいですか? その場合、そのメソッド シグネチャは機能するはずです。ListYourClass

編集:クラスのリストを渡したいと述べたので、これはうまくいくはずです:

public void x(List<Class<? extends YourClass>> m)

このようにテストされました:

import java.util.*;

class YourClass {}
class YourClassEx extends YourClass {}

public class Test {

    public static void x(List<Class<? extends YourClass>> m) {
        // stuff...
    }

    public static void main(String[] argv) {

        List<Class<? extends YourClass>> list = new ArrayList<>();
        list.add(YourClass.class);
        list.add(YourClassEx.class);
        x(list); // compiles fine until here

        list.add(String.class); // doesn't compile
        x(new ArrayList<Class>()); // doesn't compile, either

    }
}
于 2013-03-13T18:13:06.537 に答える