【发布时间】:2018-10-27 10:20:50
【问题描述】:
- 为了让我的问题变得简单,我给出了一个简单的场景示例
我有一个
class A,它有方法add()。 -
现在我想在运行时
create its objectdynamically只是 提供其class name.我该怎么做,我已经写了 以下代码,但当然它不起作用。public class Practice{ public void add(){ System.out.println("add method"); } public static void main(String[] args) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException { String className = "A"; Object xyz = Class.forName(className).newInstance(); xyz.add(); }}
上面的代码不工作,我不知道为什么,我找不到哪里出错了,second thing 在 main mathod 我正在 定义对象变量(在上面的代码中是 xyz)**,我也想 c动态地创建对象变量**。
我上面的代码给我以下错误是
Exception in thread "main" java.lang.ClassNotFoundException: Practice
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at practice.Practice.main(Practice.java:94)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
【问题讨论】:
-
请定义“不工作”。您是否收到任何编译错误、运行时异常或不正确的输出?使用edit 选项来澄清您的问题。
-
我在这里看不到
swing元素。 -
在旁注中,
public void add{应该是public void add(){ -
您提供的 Stacktrace 与您发布的代码不匹配。无论如何,我怀疑您忘记包含有关包裹的信息,所以应该是
forName("A")而不是forName("full.package.name.of.A")。 -
@shaunTait 尝试使您的示例尽可能简单是正确的选择,恭喜!但同样重要的是(1)注意不要包含与实际问题无关的问题(不要浪费愿意帮助你的人的时间,这也会指出那些不相关的问题)(2)确保示例可以实际上用来重现你的问题。这些文章应该对您未来的问题有所帮助:minimal reproducible example(又名SSCCE)
标签: java object dynamic runtime