Не знаю, ищите ли вы это, но я только что проверил это следующим образом.
Классы:
class ModelName {
public static void createTable(SQLiteDatabase db){
System.out.println(Thread.currentThread().getStackTrace()[1]);
}
public static void deleteTable(SQLiteDatabase db){
System.out.println(Thread.currentThread().getStackTrace()[1]);
}
}
class OtherModelName {
public static void createTable(SQLiteDatabase db){
System.out.println(Thread.currentThread().getStackTrace()[1]);
}
public static void deleteTable(SQLiteDatabase db){
System.out.println(Thread.currentThread().getStackTrace()[1]);
}
}
Основной код:
Class<?>[] models = {ModelName.class, OtherModelName.class};
for(Class<?> model : models){
Method method = model.getMethod("createTable", SQLiteDatabase.class);
method.invoke(null, new SQLiteDatabase());
method = model.getMethod("deleteTable", SQLiteDatabase.class);
method.invoke(null, new SQLiteDatabase());
}
Вывод:
demo.reflection.ModelName.createTable(IterateClassStaticMethod.java:12)
demo.reflection.ModelName.deleteTable(IterateClassStaticMethod.java:16)
demo.reflection.OtherModelName.createTable(IterateClassStaticMethod.java:22)
demo.reflection.OtherModelName.deleteTable(IterateClassStaticMethod.java:26)
Примечание. Для меня это выглядит более затратно, чем просто создание экземпляров.Кроме того, код выглядит менее читабельным и управляемым, как этот.