Назначение типа данных универсальному типу переменной на основе условия в Java

#java #generics

Вопрос:

У меня есть возможность поддерживать несколько типов данных для одной и той же переменной. Поэтому попробовал использовать дженерики. Например

 class Testlt;Tgt; {  T defaultValue;  String value; }  class TestImpl {  private void test(String datatype ){  Testlt;?gt; test = null;  if (datatype.equals("Integer")) {  test = new Testlt;Integergt;();  test.setDefaultValue(3); // I get some issues while doing this statement  }  if (datatype.equals("String")) {  test = new Testlt;Stringgt;();  test.setDefaultValue("dummy");  }  // some other actions common for all possible data types   } }  

Приведенный выше код не работает. Может ли кто-нибудь, пожалуйста, предложить хороший способ сделать это?

Комментарии:

1. в соответствии с этим контекстом вам нужна фабрика, которая возвращает объект, а затем передает его в ваш клиент. или добавьте больше контекста

2. @bananas , не могли бы вы предоставить небольшой фрагмент кода этого подхода ?

Ответ №1:

Я изменил названия классов.

 class SOQlt;Tgt; {   T defaultValue;  String value;   }  class SOQ_Impl {   private void test(String datatype)  {    switch (datatype)  {    case "Integer": {  SOQlt;Integergt; test = new SOQlt;gt;();  test.defaultValue = 3;  actionsCommonForAllPossibleDataTypes(test);  break;  }    case "String": {  SOQlt;Stringgt; test = new SOQlt;gt;();  test.defaultValue = "dummy";  actionsCommonForAllPossibleDataTypes(test);  break;  }    }    }    private void actionsCommonForAllPossibleDataTypes(SOQlt;?gt; test)  {    // some other actions common for all possible data types     }   }  

Вы объявили тип с lt;?gt; параметром, и именно это вызывает у вас проблемы. Я решил эту проблему, не объявляя переменную, которую я собирался использовать, до тех пор, пока не узнаю, какого типа я хочу, чтобы она была.