1 - Вы НЕ должны этого делать.Избегайте статических методов.Одна из причин в том, что их нельзя назвать без точного класса.Группа классов, которые реализуют простые интерфейсы, будут работать быстрее, безопаснее и лучше во всех отношениях
2 - Вы можете (но не должны) делать что-то вроде этого:
for (Class<?> clazz : new Class[] { ClassA.class, ClassB.class,
ClassC.class }) {
Object[] zy = null;
String dataToSearch = "";
String[] arrayList = { "a" };
for (String pattern : arrayList) {
List<Integer> results = findAllForClass(clazz, pattern,
dataToSearch);
zy = results.toArray();
for (int i = 0; i < zy.length; i++) {
System.out.println(" Pattern searched " + pattern
+ " match is found at index : " + results);
}
}
if (zy.length == 0) {
System.out.println("Nothing matched");
}
}
@SuppressWarnings("unchecked")
public static List<Integer> findAllForClass(Class<?> clazz, String pattern,
String dataToSearch) {
List<Integer> list = null;
try {
list = (List<Integer>) clazz.getDeclaredMethod("findAll", String.class,
String.class).invoke(null, pattern, dataToSearch);
} catch (Exception e) {
list = Collections.emptyList();
}
return list;
}
Вы видите @supresswarning и попробовать / поймать?ну, это подсказка: говорит вам, что этот код, по крайней мере, подозрительно.Это на самом деле небезопасно, неэффективно, и это глупый обходной путь.
(Но мы все сделали что-то подобное однажды в нашей жизни)