「何らかの式」を...何らかの式に置き換えてpublic void x(List<Class<some expression>> m)
拡張しないクラスを渡そうとすると、メソッドがエラーをスローするようにします。class A{}
ワイルドカードを使用するか、ワイルドカードを含めない場合は常に迷惑な警告が表示されるため、使用方法について完全にベースから外れている場合でも、Class がディメンションに値する理由を理解したいと思います。
「何らかの式」を...何らかの式に置き換えてpublic void x(List<Class<some expression>> m)
拡張しないクラスを渡そうとすると、メソッドがエラーをスローするようにします。class A{}
ワイルドカードを使用するか、ワイルドカードを含めない場合は常に迷惑な警告が表示されるため、使用方法について完全にベースから外れている場合でも、Class がディメンションに値する理由を理解したいと思います。
あなたのやりたいことがよくわかりません。実際、このメソッド シグネチャは次のとおりです。
public void x(List<? extends YourClass> m)
List
クラスが拡張されていないオブジェクトの を渡すと、コンパイルされませんYourClass
( の代わりにそのように呼びましょうA
)。
メソッドでオブジェクトx
のリストをパラメーターとして取得する場合、それは別の問題です。を拡張するクラスのオブジェクトの をClass
渡すだけでよろしいですか? その場合、そのメソッド シグネチャは機能するはずです。List
YourClass
編集:クラスのリストを渡したいと述べたので、これはうまくいくはずです:
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
}
}