Используйте экземпляр Class:
Class<?> myclass = Class.forName("myClass_t");
myClass_t myVar = (myClass_t)myclass.cast(AnotherClass.classMethod());
Имейте в виду, что это может бросить несколько исключений, например, если класс, определенный строкой, не существует или если AnotherClass.classMethod() не возвращает экземпляр класса, к которому вы хотите применить. Чтобы пояснить идею интерфейса (который Usally используется для плагинов механизмов Java):
interface Testing {
public String getName();
}
class Foo implements Testing
{
public String getName()
{
return "I am Foo";
}
}
class Bar implements Testing
{
public String getName()
{
return "I am Bar";
}
}
// Then
Class<?> myclass = Class.forName("Foo");
Testing instance = (Testing)myclass.newInstance();
System.out.println(instance.getName()); // I am a Foo
myclass = Class.forName("Bar");
Testing instance = (Testing)myclass.newInstance();
System.out.println(instance.getName()); // I am a Bar
В основном у вас есть имя динамического класса (например, из файла свойств). Этот класс реализует интерфейс, поэтому вы можете убедиться, что экземпляры экземпляров предоставляют методы интерфейсов (вместо того, чтобы использовать отражение для всего).
Возможно, вы захотите использовать Reflection. Но если вы больше не расскажете о том, чего вы действительно хотите достичь, вы также можете сохранить результат 'AnotherClass.classMethod()' в 'Object' и не беспокоиться о типе. –
Дело в том, что я не знаю myClass_t. Я хочу переписать эту вторую строку так, чтобы она была обобщена. – Osmanthus