我在jar文件中有以下两个类层次结构,唯一的区别是example2.jar中的Main
没有包,而example1.jar中的Main
是包user
的一部分}。
example1.jar
// user/Main.java
package user;
import Engine.GameWindow;
public class Main extends GameWindow { }
// Engine/GameWindow.java
package Engine;
import java.applet.Applet;
public abstract class GameWindow extends Applet { }
example2.jar
// Main.java
import Engine.GameWindow;
public class Main extends GameWindow { }
// Engine/GameWindow.java
package Engine;
import java.applet.Applet;
public abstract class GameWindow extends Applet { }
我创建了这个程序来确定jar文件中的哪些类是Applet的子类。
import java.applet.Applet;
public class JarClassIdentifier
{
public static void main(String[] args)
throws Exception
{
// example1.jar: args = { "user.Main.class", "Engine.GameWindow.class" }
// example2.jar: args = { "Main.class", "Engine.GameWindow.class" }
for(String class_name : args) {
class_name = class_name.replace(".class", "");
Class<?> c = Class.forName(class_name);
if(Applet.class.isAssignableFrom(c))
System.out.println(class_name);
}
}
}
对于example1.jar,程序正确打印user.Main
和Engine.GameWindow
。为什么example2.jar只打印出Engine.GameWindow
?