在这个问题上跟我一起......我在找到解释我想要做的事情时遇到了一些麻烦。
我有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)我将如何去做?
答案 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
等不同的模式