这是一个跟进这个问题:Create new class from a Variable in Java创建和使用类从变量
我想加载基于字符串变量,它的工作原理一类,但我不能把它的任何方法。
我有多个类都实现相同的接口,例如,
class Foo implements Bar {
private String username = null;
public String getUsername() {
return this.username;
}
}
现在我想将类实例不知道哪一个是,然后调用getUsername()
就可以了。
String a = "Foo";
Class<?> c = Class.forName(a);
Object object = c.newInstance();
System.out.println(object.getUsername());
这导致
Error:(74, 15) java: cannot find symbol
symbol: method getUser()
location: variable object of type java.lang.Object
如果我将它转换为类像
Foo foo = (Foo) object;
它的工作原理,但我不能这样做,因为我不知道班级' 名称。
有没有办法做到这一点或完全是一个虚假的尝试?
你怎么知道getUsername()应该存在?它是来自一个接口或抽象类,你知道你的实例将实现/扩展? – AxelH
是的,这是众所周知的,因为它们都实现了一个接口@AxelH – baao
如果你不能通过'c.newinstance()'来检索你检索的对象,那么你必须使用反射来获取getUsername()方法。 – Turing85