我定义了一个枚举:
WHERE TO_DATE(START_DATE,'DD-MM-YYYY HH:MI:SS')>= ADD_MONTHS( TO_DATE('26-' || UPPER($P{MONTH}) || '-' || $P{YEAR} ,'DD-MM-YYYY') ,-1)
AND
TO_DATE(END_DATE,'DD-MM-YYYY HH:MI:SS') <= ADD_MONTHS( TO_DATE('26-' || UPPER($P{MONTH})|| '-' || $P{YEAR} ,'DD-MM-YYYY') ,0)
我想用索引创建一个枚举:
enum TestEnum {
test1,
test2,
}
我不知道枚举的类型。
答案 0 :(得分:2)
enum A { a1, a2, a3}
A.values[index]
答案 1 :(得分:0)
您不能对类型参数进行静态访问,因此无法使用。
除了反射(dart:mirrors
)之外,没有其他方法可以将值从该类型转换为该类型的静态成员。
答案 2 :(得分:0)
我知道您的意思,但似乎不被支持。至少您可以覆盖它:
enum YourEnum { a1, a2, a3 }
enum AnotherEnum { b1, b2, b3 }
abstract class ToolsEnum<T> {
T getEnumFromString(String value);
}
class YourClass with ToolsEnum<YourEnum> {
@override
YourEnum getEnumFromString(String value) {
return YourEnum.values
.firstWhere((e) => e.toString() == "YourEnum." + value);
}
}
class AnotherClass with ToolsEnum<AnotherEnum> {
@override
AnotherEnum getEnumFromString(String value) {
return AnotherEnum.values
.firstWhere((e) => e.toString() == "AnotherEnum." + value);
}
}
答案 3 :(得分:0)
我知道这是一个老问题,至少到目前为止,似乎无法返回E
,其中E
是通用enum
,但是我正在使用此代码:
static dynamic asEnumValue(List<dynamic> enumValues, int index) {
try {
return enumValues[index];
} catch (err) {
return null;
}
}
这仅使您不必每次检查index
是否为您的Enum类型的正确值。
如果您传递正确的值,则仍可以使用枚举属性,例如之后的索引。
当然,如果您未传递正确的枚举值,您将得到TypeError
。
使用示例(DartPad):
enum Test {
a,
b,
c
}
dynamic asEnumValue(List<dynamic> enumValues, int index) {
try {
return enumValues[index];
} catch (err) {
return null;
}
}
Test aTest;
Test nullTest1;
Test nullTest2;
void main() {
aTest = asEnumValue(Test.values, 0);
nullTest1 = asEnumValue(Test.values, -1);
nullTest2 = asEnumValue(Test.values, null);
print(aTest);
print(nullTest1);
print(nullTest2);
print(aTest?.index);
print(nullTest1?.index);
print(nullTest2?.index);
}
输出:
Test.a
null
null
0
null
null