小编Squ*_*vin的帖子

Java中类型为Varargs的类型

例如,如果我有一个方法,使用类型的varargs扩展超类,如下所示:

public static <E extends Example> void test(Class<E>... es){}
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用Example的两个不同的子类调用该方法,我只能在其中创建一个包含两个类的数组.

//this does not work
test(E1.class,E2.class);
//this does work
test(new Class[]{E1.class,E2.class});
public class E1 extends Example {}
public class E2 extends Example {}
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

java generics variadic-functions superclass

5
推荐指数
1
解决办法
1136
查看次数

程序因递归而减慢

我正在尝试编写一个程序,将我的C:驱动器上的每个文件和文件夹名称添加到ArrayList.代码工作正常,但由于大量的递归,它变得非常缓慢.这是代码:

public static void updateFileDataBase()
{
    ArrayList<String> currentFiles = new ArrayList<String>();
    addEverythingUnder("C:/",currentFiles,new String[]{"SteamApps","AppData"});
    for(String name : currentFiles)
        System.out.println(name);
}
private static void addEverythingUnder(String path, ArrayList<String> list, String[] exceptions)
{
    System.gc();
    System.out.println("searching " + path);
    File search = new File(path);
    try
    {
        for(int i = 0; i < search.list().length; i++)
        {
            boolean include = true;
            for(String exception : exceptions)
                if(search.list()[i].contains(exception))
                    include = false;
            if(include)
            {
                list.add(search.list()[i]);
                if(new File(path + "/" + search.list()[i]).isDirectory())
                {
                    addEverythingUnder(path + "/" + search.list()[i],list,exceptions);
                }
            }
        } …
Run Code Online (Sandbox Code Playgroud)

java recursion performance

0
推荐指数
2
解决办法
197
查看次数