Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在包中列出类';s子目录_Java_Android_Package_Subdirectory - Fatal编程技术网

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