Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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中使用类作为参数?_Java_Class_Parameter Passing - Fatal编程技术网

如何在java中使用类作为参数?

如何在java中使用类作为参数?,java,class,parameter-passing,Java,Class,Parameter Passing,一、 我制作了一个库,可以重新启动任何调用它的方法的类。它只需要类来构建命令。以下是我目前掌握的情况: public static void restart(Class a) { final String javaBin = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java"; try { File currentJar = n

一、 我制作了一个库,可以重新启动任何调用它的方法的类。它只需要类来构建命令。以下是我目前掌握的情况:

public static void restart(Class a) {
        final String javaBin = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
        try {
            File currentJar = new File(a.class.getProtectionDomain().getCodeSource().getLocation().toURI());
            /* is it a jar file? */
            if(!currentJar.getName().endsWith(".jar")) {
                return;
            }
            /* Build command: java -jar application.jar */
            final ArrayList<String> command = new ArrayList<>(5);
            command.add(javaBin);
            command.add("-jar");
            command.add(currentJar.getPath());
            final ProcessBuilder builder = new ProcessBuilder(command);
            builder.start();
            System.exit(0);
        } catch (URISyntaxException | IOException ex) {
            Logger.getLogger(a.class.getName()).log(Level.SEVERE, null, ex);
        }
}
问题是变量“a”未被识别为参数。有人能帮忙吗?

请看下面的代码片段

public class Test {



public static void main(String[] args) {

    Test test = new Test();
    check(test.getClass());
}

public static void check(Class<?> a){
    System.out.println(a);  
}
}

重新启动任何类你是什么意思?那么首先,你会遇到任何错误吗?有什么不良行为吗?这个代码怎么了…错了?您需要详细说明,因为虽然有人可以将其插入IDE中,但如果您对遇到的错误/困难直言不讳会更好。不确定您到底想做什么。但是如果你正在接受一个Class类型的输入,然后你想对它调用一些方法,那么你需要使用反射。如果你试图重新加载这个类。。您需要编写一个自定义类加载器,然后通过它加载类。。但我不明白这里的重点是,为什么你需要这样做?它是一个系统;你能解释一下你的答案吗?这和这个问题有什么关系?@KickButtowski他说的是,你是如何通过考试的?重要的一点是,您传递的是一个类,而不是一个对象。除了不使用泛型之外,我认为你的代码没有什么问题。。。我会查看调用者并确保正确地传入了一个类。我相信这就是Sasikumar M的要求。Sasikumar,你能澄清一下你的答案吗?我试过了,但没用。我希望参数能够使用.class方法。