Значение класса, чтобы сохранить тип объекта для последующего приведения? - PullRequest
0 голосов
/ 16 мая 2018

Я работаю над проектом, который использует онтологию для запуска алгоритма. Другими словами, параметры / возвращаемое значение алгоритма извлекаются из семантической базы данных, чтобы их можно было запускать с использованием запросов SPARQL.

Допустим, я хочу получить результат такого алгоритма после его выполнения, который имеет определенный тип, но я должен хранить его очень общим способом. Я бы сделал Object result = myAlgorithm(param1, param2, ...);. Это не позволяет мне сохранять тип результата для последующего приведения. Я думаю о решении, но я не уверен, насколько оно законно в Java:

public class Value {
   Object o;
   Class<?> type;

   public Value(Object o, Class<?> type) {
       this.o = o;
       this.type = type;
   }

   Class<?> getType() { return type; }

   Object getO() { return o; } 
}

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

1 Ответ

0 голосов
/ 16 мая 2018

Каждый объект уже сохраняет свой тип в методе result.getClass(), поэтому вам не нужно поле Class<?> type.В вашем коде обработки вы можете сделать

if (result instanceOf <SomeSubtype>) {
     <SomeSubtype> resultCasted = (<SomeSubtype>) result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...