我有课A,B,C和D那里B延伸A,C扩展A和D延伸A.
我有以下ArrayList几个,其中包含一些元素:
ArrayList<B> b;
ArrayList<? extends A> mix = b;
Run Code Online (Sandbox Code Playgroud)
我打算让变量mix包含类型的元素B,C或D.我试图类型的元素加入C到mix这样的:
mix.add(anElementOfTypeC);
Run Code Online (Sandbox Code Playgroud)
但IDE不允许我这样做,它说:
通过调用转换的方法,无法将anElementOfTypeC转换为CAP#1,其中CAP#1是一个新的类型变量:CAP#1从捕获?延伸A.
我使用<? extends A>得当吗?我该如何解决这个问题?
我最近升级到 JDK 9 并且 Eclipse 抱怨sun.misc.Launcher无法导入。好像sun.misc.Launcher是不安全的。我正在寻找替代方法来替换我项目中的这行代码。
final URL url = Launcher.class.getResource("/");
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
更新:上述代码块的更完整版本是:
final URL url = Launcher.class.getResource("/");
final File fs = new File(url.toURI());
for (File f : fs.listFiles()) {
System.out.println(f.getAbsolutePath());
}
Run Code Online (Sandbox Code Playgroud)
这是src在 IDE 中启动程序时打印文件夹中的所有文件。