Im new here, и я хочу начать с моего первого, а не простого описания вопросов. Я думаю, что часть кода может объяснить лучше всего.JAVA cast Объект с «неизвестным» типом в виде другого объекта
public void erlaube(Geraet pGeraet){
for(Object g : mGeraetetypen){
if(pGeraet.getClass().equals(g.getClass())){
System.out.println("TRUE");
mErlaubt.add((g.getClass())pGeraet); // MY PROBLEM
}
//System.out.println(pGeraet.getClass());
//System.out.println(g.getClass());
}
}
А «Geraet» (устройство) является абстрактным классом, и это может быть датчик или актер f.ex. класс Temperaturesensor.
Geraetetypen (Devicetypes) является ArrayList и содержит все доступные датчики и актеры.
Блокировка for и if проверяет, является ли параметр Object объектом типа, содержащегося в списке Devicetypes f.ex. Датчик температуры. , если это так, я хочу добавить его в качестве этого типа данных (Temperaturesensor) в массив «mErlaubt» (mAllowed) ArrayList.
Так оно и должно делать то же самое, как это (CAST):
mErlaubt.add((Temperatursensor) pGeraet);
Но я не хочу, чтобы бросить явно с (Temperatursensor). Я хочу бросить динамический тип данных, который я нашел из Datatypelist, который сравнивается.
Возможно, что-то вроде строки с комментарием // МОЯ ПРОБЛЕМА, но это не работает.
Я знаю, что это сложно, и мое описание не очень хорошо, но я надеюсь, что вы понимаете, что я пытаюсь сделать. Пожалуйста помоги. Если вы что-то не понимаете и не задаете вопрос, пожалуйста, спросите .. Спасибо!
можно заливать объекты с помощью [ 'Class.cast'] (HTTP: // docs.oracle.com/javase/7/docs/api/java/lang/Class.html#cast(java.lang.Object)) метод, e. г. 'G.getClass(). Литая (pGeraet)'. –
Какой тип 'mGeraetetypen' и' mErlaubt'? Я думаю, что есть более эффективный подход к вашей проблеме. –
Тип обоих: ArrayList –