我正在制作一個程式,讓用戶呼叫一個類,就像它需要一個字串輸入,然后呼叫該類的 run() 方法,有沒有辦法做到這一點?我希望是這樣的:
String inp=new Scanner(System.in).nextLine();
Class cl=new Class(inp);
cl.run();
我知道代碼不正確,但這是我的主要想法
uj5u.com熱心網友回復:
按名稱創建和使用類需要一些先決條件:
- 必須使用類的全名,包括包名。
- 您需要知道建構式的引數。通常無引數建構式用于此類用例。
- (可選)您需要一個此類必須實作的介面,該介面宣告方法“run”(或您想要使用的任何其他方法)。
一個例子:
String className = "some.classname.comes.from.Client";
Class<Runnable> clazz = (Class<Runnable>) Class.forName(className);
Runnable instance = clazz.getConstructor().newInstance();
instance.run();
如果您沒有通用介面,則可以使用反射呼叫該方法:
Class<Object> clazz = (Class<Object>) Class.forName(className);
Object instance = clazz.getConstructor().newInstance();
clazz.getMethod("run").invoke(instance);
uj5u.com熱心網友回復:
我相信您應該總體上研究 Class.forName 和反射 API。Class.forName 的用法
uj5u.com熱心網友回復:
字串變數不能作為類的參考。到諸如更改物件之類的東西取決于您可以使用多型性和設計模式(工廠模式)的輸入
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/394436.html
標籤:爪哇
