【问题标题】:How to use a class as a parameter in java? [closed]如何在java中使用类作为参数? [关闭]
【发布时间】:2014-08-08 06:46:32
【问题描述】:

我正在制作一个可以重新启动任何调用它的方法的类的库。它只需要类来构建命令。这是我目前所拥有的:

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”未被识别为参数。有人可以帮忙吗?

【问题讨论】:

  • 重启任何课程什么意思?
  • 首先,您是否遇到任何错误?是否有一些不良行为?这段代码是……错误的怎么办?您需要详细说明,因为虽然可以将其放入 IDE,但最好提前了解您遇到的错误/困难。
  • 不确定你到底想做什么。但是如果你正在接受一个 Class 类型的输入,然后你想在它上面调用一些方法,那么你需要使用反射。
  • 如果你试图重新加载类..你需要编写一个自定义类加载器然后通过它加载类..但我不明白这里是你为什么需要这样做是吗?
  • 它做了一个System.exit(0);

标签: java class parameter-passing


【解决方案1】:

见下面代码sn-p

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);  
}
}

【讨论】:

  • 你能解释一下你的答案吗?它与问题有什么关系?
  • @KickButtowski 他在说什么,你是如何通过你的课程的?重要的部分是你传递的是一个类而不是一个对象。除了您不使用泛型之外,我认为您的代码没有太大问题......我会查看调用者并确保正确传递了一个类。我相信这就是 Sasikumar M 所要求的。 Sasikumar,你能澄清一下你的答案吗?
  • 我试过了,但是没有用。我希望参数能够使用 .class 方法。
猜你喜欢
  • 1970-01-01
  • 2012-10-21
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 2021-08-14
  • 2021-08-23
相关资源
最近更新 更多