说我有一个只是的枚举
public enum Blah {
A, B, C, D
}
Run Code Online (Sandbox Code Playgroud)
我想找到一个字符串的枚举值,例如"A",这将是Blah.A.怎么可能这样做?
Enum.valueOf()我需要的方法是什么?如果是这样,我将如何使用它?
我创建了一个自定义视图(在此处找到),其中包含enum类型的declare-styleable属性.在xml中,我现在可以为自定义属性选择一个枚举条目.现在我想创建一个以编程方式设置此值的方法,但我无法访问枚举.
attr.xml
<declare-styleable name="IconView">
<attr name="icon" format="enum">
<enum name="enum_name_one" value="0"/>
....
<enum name="enum_name_n" value="666"/>
</attr>
</declare-styleable>
Run Code Online (Sandbox Code Playgroud)
layout.xml
<com.xyz.views.IconView
android:id="@+id/heart_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="enum_name_x"/>
Run Code Online (Sandbox Code Playgroud)
我需要的是:mCustomView.setIcon(R.id.enum_name_x);
但是我找不到枚举,或者我甚至不知道如何获得枚举或枚举的名称.
我需要int在Java中将序数值转换为枚举值.这很简单:
MyEnumType value = MyEnumType.values()[ordinal];
Run Code Online (Sandbox Code Playgroud)
该values()方法是隐式的,我无法找到它的源代码,因此问题.
是否MyEnumType.values()分配新阵列?如果确实如此,我应该在第一次调用时缓存数组吗?假设转换将经常被调用.
在java我有:
public class MyClass{
public enum STATUS {
ZERO,
ONE ,
TWO
}
public native STATUS nativeGetStatus();
...
private STATUS state = nativeGetStatus(); //returns enum
private STATUS state2 = nativeGetStatus(); //returns enum
}
Run Code Online (Sandbox Code Playgroud)
我希望本机方法'nativeGetStatus'返回此枚举值.
JNI返回整数并与java中的枚举值进行比较是一个选项,但是想知道是否可以通过jobject返回值并将其直接分配给状态?如果有,怎么样?
我正在尝试String使用以下函数扩展类型的枚举类,但我无法在调用站点使用它,如下所示:
fun <T: Enum<String>> Class<T>.join(skipFirst: Int = 0, skipLast: Int = 0): String {
return this.enumConstants
.drop(skipFirst)
.dropLast(skipLast)
.map { e -> e.name }
.joinToString()
}
MyStringEnum.join(1, 1);
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?