繁体   English   中英

Java反射

[英]Java reflection

我的代码给了我一个java.lang.ClassNotFoundException: a

如何生成该类?

我没那么做 像这样给人错误。 java.lang.ClassNotFoundException:一个如何生成该类?

String line = reader.readLine();

Class<?> writeoutClass = Class.forName(line);

您在此处输入的课程在classpath中不可用。

如果输入为String: helloasdjfhajsdklfhjh则在类路径中应该有具有相同限定名的类。

您真的要在运行时创建一个新类吗? 如果是这样的话

  1. 您将需要该类的字节码,
  2. 创建一个新的ClassLoader,可以使用此字节码创建您的类。

对于1:例如,您可以从某个数据库或某些数据库中获取字节码(如果已存在)。 否则,您将需要创建它-通过生成Java源代码并对其进行编译(这意味着需要Java编译器),或者通过使用字节码工程库(例如ASM)来创建它。 (当然,您也可以手动执行此操作,但我不建议这样做。)

这一切都取决于您实际想要做什么。

对于2:创建ClassLoader的子ClassLoader并实现findClass方法以获取字节码并为您调用defineClass 创建此类的对象,并将其作为参数传递给Class.forName()方法,或简单地调用loader.loadClass(name)

如果您的新类使用其他任何类,则应由同一类加载器或任何祖先类加载器加载它们,否则会出现运行时错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM