打电话给方法,但不知道从哪个班级

时间:2016-12-06 13:54:03

标签: java class

在这个问题上跟我一起......我在找到解释我想要做的事情时遇到了一些麻烦。

我有26个班级。每个方法都有相同名称,返回类型和参数的方法。类名是aWord(),bWord(),cWord等。

方法接受单个char作为参数并返回String []。

以下代码有效,但是超长,每次我想要一个不同的方法时我都必须这样做:

if (firstChar == 'a'){aWord word = new aWord(); wordArray = word.returnWordArray();}
else if (firstChar == 'b'){bWord word = new bWord(); wordArray = word.returnWordArray();}
    else if (firstChar == 'c'){cWord word = new cWord(); wordArray = word.returnWordArray();}
    else if (firstChar == 'd'){dWord word = new dWord(); wordArray = word.returnWordArray();}

理想情况下,我能够拥有类似的内容:

String className = char + "Word";
className thisClass = new className();

String[] stringy = className.returnWordArray();

知道a)我在谈论什么,以及b)我将如何去做?

1 个答案:

答案 0 :(得分:2)

你可以通过反思实现这一点。

String className = char + "Word";
Class c = Class.forName("com.yourWholePackage." + className);
Object obj = c.newInstance(); // get Instance
Method method = c.getDeclaredMethod("returnWordArray");
String[] stringy = (String[]) method.invoke(obj);

除了简化if-else之外,您还可以使用switch-case,最终使用Factory甚至Inheritance等不同的模式

相关问题