我想创建一个我只知道它的类路径的对象 任何帮助将不胜感激。
答案 0 :(得分:5)
如果您在String
中拥有完整的合格类名,请使用Class#forName()
和Class#newInstance()
。
Object o = Class.forName("com.example.Foo").newInstance();
然而,这要求类已经存在于类路径中并且具有(隐式)默认构造函数。
如果不是,并且您在URL
中拥有该班级的位置,则使用URLClassLoader
并将其传递给另一个Class#forName()
方法,该方法将其作为参数接受。
URL url = getItSomehow();
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[] { url });
Object o = Class.forName("com.example.Foo", true, classLoader).newInstance();
或者,如果您使用的是File
,请先将其转换为URL
:
File file = getItSomehow();
URL url = file.toURI().toURL();
// Continue with URLClassLoader.
答案 1 :(得分:2)
你的意思是?
Class c = Class.forName("java.lang.String");