Приведите класс в Java - PullRequest
       2

Приведите класс в Java

0 голосов
/ 03 февраля 2012

базовое приведение должно быть

MyClass mc = (MyClass) aClass

, что просто

, но, основываясь на моей программе, я нене может знать имя класса до времени выполнения.

например, имя класса может быть interp_0, interp_1, interp_2, interp_3 ....... #;

В любом случае в Java естьЯ мог бы использовать, чтобы разыграть его?

Пока все, что я получил, это

Class afterCast = Class.forName ("Interp_" + countState);

но я хочу

("Interp_" + countState) afterCast

, а не

Класс afterCast

.

Спасибо всем, кто мне помогает.Это так быстро, как я ожидал.

Ответы [ 3 ]

0 голосов
/ 03 февраля 2012

То, что вы ищете, вероятно, примерно так:

Class newClass = Class.forName("Interp_" + countState);
newClass.cast(yourObject);

Однако, не зная фактического класса во время компиляции, казалось бы, не было бы ничего значительного, что вы могли бы фактически сделать с правильно приведенным значением в любом случае, так как вы не смогли бы выразить какие-либо конкретные вызовы методов или ссылки на поля в вашей программе без определенного класса. Вы уверены, что вас не смущает что-то еще? Что вы действительно пытаетесь достичь?

0 голосов
/ 03 февраля 2012

Я бы предложил использовать интерфейс, реализованный всеми этими классами, который содержит необходимые вам методы. Затем вы можете привести к этому интерфейсу. Я не понимаю, почему это должно быть сделано иначе, потому что вы знаете, какие методы вы ожидаете от тех объектов, которые на самом деле являются интерфейсом.

0 голосов
/ 03 февраля 2012
Object something = "something";
String theType = "java.lang.String";
Class<?> theClass = Class.forName(theType);
Object obj = theClass.cast(something);

Это похоже на похожий вопрос: Java: как я могу выполнить динамическое приведение переменной от одного типа к другому?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...