我有一個支持同一變數的多種資料型別的用例。所以嘗試使用泛型。例如
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
}
}
上面的代碼不起作用。任何人都可以請建議一個好的方法嗎?
uj5u.com熱心網友回復:
我更改了班級名稱。
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
}
}
您使用<?>引數宣告了型別,這就是導致您出現問題的原因。我解決了這個問題,直到我知道我想要它是什么型別之后才宣告我要使用的變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/370671.html
