相关疑难解决方法(0)

如何从Java中的字符串值获取枚举值?

说我有一个只是的枚举

public enum Blah {
    A, B, C, D
}
Run Code Online (Sandbox Code Playgroud)

我想找到一个字符串的枚举值,例如"A",这将是Blah.A.怎么可能这样做?

Enum.valueOf()我需要的方法是什么?如果是这样,我将如何使用它?

java enums

1890
推荐指数
22
解决办法
106万
查看次数

如何获取在代码中的attrs.xml中创建的枚举

我创建了一个自定义视图(在此处找到),其中包含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); 但是我找不到枚举,或者我甚至不知道如何获得枚举或枚举的名称.

enums android custom-view android-custom-view attr

95
推荐指数
5
解决办法
4万
查看次数

Enum#values()是否在每次调用时分配内存?

我需要int在Java中将序数值转换为枚举值.这很简单:

MyEnumType value = MyEnumType.values()[ordinal];
Run Code Online (Sandbox Code Playgroud)

values()方法是隐式的,我无法找到它的源代码,因此问题.

是否MyEnumType.values()分配新阵列?如果确实如此,我应该在第一次调用时缓存数组吗?假设转换将经常被调用.

java enums memory-management

25
推荐指数
2
解决办法
2008
查看次数

如何从JNI返回枚举

在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返回值并将其直接分配给状态?如果有,怎么样?

java java-native-interface enums

15
推荐指数
2
解决办法
1万
查看次数

Kotlin:如何使用扩展函数扩展枚举类

我正在尝试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)

我在这做错了什么?

enums kotlin kotlin-extension

10
推荐指数
4
解决办法
8563
查看次数