【问题标题】:Assigning datatype to a generic type of variable based on a condition in Java基于Java中的条件将数据类型分配给通用类型的变量
【发布时间】:2021-11-29 05:37:33
【问题描述】:

我有一个用例支持同一变量的多种数据类型。所以尝试使用泛型。例如

class Test<T> {
    T defaultValue;
    String value;
}

class TestImpl {
    private void test(String datatype ){
        Test<?> test = null;
        if (datatype.equals("Integer")) {
            test = new Test<Integer>();
            test.setDefaultValue(3); // I get some issues while doing this statement
        }
        if (datatype.equals("String")) {
            test = new Test<String>();
            test.setDefaultValue("dummy");
        }
        // some other actions common for all possible data types 
    }
}

上面的代码不起作用。任何人都可以提出一个好的方法吗?

【问题讨论】:

  • 根据此上下文,您需要返回对象的工厂,然后将其转换为您的客户端。或添加更多上下文
  • @bananas ,能否请教一下方法的小代码sn-p?

标签: java generics


【解决方案1】:

我更改了类名。

class SOQ<T>
{

   T defaultValue;
   String value;
   
}

class SOQ_Impl
{

   private void test(String datatype)
   {
   
      switch (datatype)
      {
      
         case "Integer": {
            SOQ<Integer> test = new SOQ<>();
            test.defaultValue = 3;
            actionsCommonForAllPossibleDataTypes(test);
            break;
         }
      
         case "String": {
            SOQ<String> test = new SOQ<>();
            test.defaultValue = "dummy";
            actionsCommonForAllPossibleDataTypes(test);
            break;
         }
      
      }
      
   }
   
   private void actionsCommonForAllPossibleDataTypes(SOQ<?> test)
   {
   
         // some other actions common for all possible data types 
   
   }
   
}

您使用&lt;?&gt; 参数声明了类型,这就是导致您出现问题的原因。我解决了这个问题,直到我知道我想要它是什么类型之后才声明我要使用的变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多