Java 在包中列出类';s子目录
我不确定我在这里使用的术语是否正确。。但如果我的包名设置如下:Java 在包中列出类';s子目录,java,android,package,subdirectory,Java,Android,Package,Subdirectory,我不确定我在这里使用的术语是否正确。。但如果我的包名设置如下: com.example.fungame -ClassA -ClassB -com.example.fungame.sprite -ClassC -ClassD 如何以编程方式获取.sprite子目录中所有类的数组(我猜是类[]) public static Class[] getClasses(String pckgname) throws ClassNotFoundExce
com.example.fungame
-ClassA
-ClassB
-com.example.fungame.sprite
-ClassC
-ClassD
如何以编程方式获取.sprite
子目录中所有类的数组(我猜是类[]
)
public static Class[] getClasses(String pckgname) throws ClassNotFoundException {
ArrayList classes=new ArrayList();
File directory = null;
try {
directory = new File(Thread.currentThread().getContextClassLoader().getResource(pckgname.replace('.', '/')).getFile());
} catch(NullPointerException x) {
throw new ClassNotFoundException(pckgname + " does not appear to be a valid package");
}
if (directory.exists()) {
// Get the list of the files contained in the package
String[] files = directory.list();
for (int i = 0; i < files.length; i++) {
// we are only interested in .class files
if(files[i].endsWith(".class")) {
// removes the .class extension
try {
Class cl = Class.forName(pckgname + '.' + files[i].substring(0, files[i].length() - 6));
classes.add(cl);
} catch (ClassNotFoundException ex) {
}
}
}
} else {
throw new ClassNotFoundException(pckgname + " does not appear to be a valid package");
}
Class[] classesA = new Class[classes.size()];
classes.toArray(classesA);
return classesA;
}
public静态类[]getClasses(字符串pckgname)抛出ClassNotFoundException{
ArrayList类=新的ArrayList();
文件目录=null;
试一试{
目录=新文件(Thread.currentThread().getContextClassLoader().getResource(pckgname.replace('.','/')).getFile());
}捕获(NullPointerException x){
抛出新的ClassNotFoundException(pckgname+“似乎不是有效的包”);
}
if(directory.exists()){
//获取包中包含的文件列表
String[]files=directory.list();
对于(int i=0;i
尝试以下方法:
public static Class[] getClasses(String pckgname) throws ClassNotFoundException {
ArrayList classes=new ArrayList();
File directory = null;
try {
directory = new File(Thread.currentThread().getContextClassLoader().getResource(pckgname.replace('.', '/')).getFile());
} catch(NullPointerException x) {
throw new ClassNotFoundException(pckgname + " does not appear to be a valid package");
}
if (directory.exists()) {
// Get the list of the files contained in the package
String[] files = directory.list();
for (int i = 0; i < files.length; i++) {
// we are only interested in .class files
if(files[i].endsWith(".class")) {
// removes the .class extension
try {
Class cl = Class.forName(pckgname + '.' + files[i].substring(0, files[i].length() - 6));
classes.add(cl);
} catch (ClassNotFoundException ex) {
}
}
}
} else {
throw new ClassNotFoundException(pckgname + " does not appear to be a valid package");
}
Class[] classesA = new Class[classes.size()];
classes.toArray(classesA);
return classesA;
}
public静态类[]getClasses(字符串pckgname)抛出ClassNotFoundException{
ArrayList类=新的ArrayList();
文件目录=null;
试一试{
目录=新文件(Thread.currentThread().getContextClassLoader().getResource(pckgname.replace('.','/')).getFile());
}捕获(NullPointerException x){
抛出新的ClassNotFoundException(pckgname+“似乎不是有效的包”);
}
if(directory.exists()){
//获取包中包含的文件列表
String[]files=directory.list();
对于(int i=0;i
我不确定我是否理解这个问题。目录中没有类,只有文件。那么,您是在问如何实例化这些文件所表示的类,并将每个类的实例放在一个数组中吗?顺便说一句,即使这是可能的,它也可能是一个对象[]
,除非它们共享一个不太一般的类的继承。这个问题以前已经被问过很多次了,其中一个问题是:klactose,我没有提到实例化它们。作为对“目录中没有类,只有文件”的回应。。你认为文件在哪里?这是正确的。。目录!seanizer,你应该把你的回复作为一个答案。这没有意义。包有子包,而不是目录。文件在目录中,类在包中。可能有零个或多个目录对应于任何给定的包。在你的例子中肯定没有.sprite目录。我认为人们错过了文章的第一句话。唯一一个有建设性回应的人甚至没有把它作为答案贴出来,这样我就可以投票/接受它。呃,我不太明白这个问题。目录中没有类,只有文件。那么,您是在问如何实例化这些文件所表示的类,并将每个类的实例放在一个数组中吗?顺便说一句,即使这是可能的,它也可能是一个对象[]
,除非它们共享一个不太一般的类的继承。这个问题以前已经被问过很多次了,其中一个问题是:klactose,我没有提到实例化它们。作为对“目录中没有类,只有文件”的回应。。你认为文件在哪里?这是正确的。。目录!seanizer,你应该把你的回复作为一个答案。这没有意义。包有子包,而不是目录。文件在目录中,类在包中。可能有零个或多个目录对应于任何给定的包。在你的例子中肯定没有.sprite目录。我认为人们错过了文章的第一句话。唯一一个有建设性回应的人甚至没有把它作为答案贴出来,这样我就可以投票/接受它。呃。我用子目录,甚至是getPackageName()
试过几次,但它总是抛出ClassNotFoundException
我用子目录,甚至getPackageName()
试过几次,但它总是抛出ClassNotFoundException