我有 A1.java, A2.java, A3.java ... A10.java 等十个类(也许更多);
他们里面都有一个public static String getResponse()
的方法,不过里面所做的事情和回复的字符串都不一样;
我还有一个变量 String name = "A1";
,不确定变量里面的到底是哪一个类的名字,不过肯定是这是个类里面的一个。
我想当我收到这个name变量之后动态调用所对应的类的get
Response方法,而且不想用if-else一个个判断。
试了下下面的代码,forName回复的是一个class对象,好像不能强制类型转换。能转换也不知道到底转换成哪一个对象,我不想一个个if-else判断。
String result = Class.forName(name).getResponse();
これは Java リフレクションの使用です。
まず、
Class.forName
获取一个类的 Class 对象, 然后通过这个 Class 对象的getMethod
メソッドを通じて指定されたメソッド オブジェクト (メソッド) を取得する必要があります。ソース コードで表されます。 リーリー
class.forName はクラスオブジェクトを取得します。その後、このクラス オブジェクトの getMethod メソッドを通じて、対応するメソッドを取得できます。次に、対応するメソッドを呼び出します
これら 10 個のクラスはすべて、
などのインターフェイスを実装できますか? リーリーすると、A1、A2... はすべて
implements A0
,并实现getResponse
になります (ただし、静的として定義することはできません)。その後、次のように書くことができます:
リーリーリフレクションに加えて、Spring も使用できます。取得した文字列を使用してBeanを取得し、メソッドを呼び出します。