這是一個跟進這個問題: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