当前位置: 首页 > 知识库问答 >
问题:

用字符串name()声明实现Java接口的Kotlin enum

谢泽语
2023-03-14

我有一个Kotlin项目,在该项目中,我使用了一个Java库依赖项,该依赖项定义了一个带有字符串name()方法声明的接口

public interface Aspect {
   int index();
   String name();
}
public enum CollisionType implements Aspect {
    ONE, TWO, THREE;

    private final Aspect aspect;
    private CollisionType() {
        aspect = CONTACT_ASPECT_GROUP.createAspect(name());
    }
    @Override
    public int index() {
        return aspect.index();
    }
}
enum class CollisionType : Aspect {
    ONE, TWO, TREE;
    val aspect: Aspect = CONTACT_TYPE_ASPECT_GROUP.createAspect(name())

    override fun index(): Int = aspect.index()
    @JvmName("aspectName")
    override fun name(): String = name
}

谢谢

共有1个答案

和弘博
2023-03-14

就我现在所见,对你来说最好的选择是:

interface Aspect2: Aspect {
  fun myName() = name()
}
enum class CollisionType : Aspect2 {
  ………
}

等等

 类似资料:
  • 问题内容: 这些声明和和之间有什么区别? 问题答案: 总是在堆上创建一个新对象 使用字符串池 试试这个小例子: 为避免在堆上创建不必要的对象,请使用第二种形式。

  • 本文向大家介绍java 字符串的拼接的实现实例,包括了java 字符串的拼接的实现实例的使用技巧和注意事项,需要的朋友参考一下 java 字符串的拼接的实现实例 在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下: 1. 把每个单词的首字母变为大写。 2. 把数字与字母之间用下划线字符(_)分开,使得更清晰 3. 把单词中间有多个空格的调整

  • 问题内容: 我有一个关于Java字符串的简单问题。以下简单代码段仅连接两个字符串,然后将它们与进行比较。 比较表达式concat==”string”返回false那么明显(I明白之间的差值equals()和==)。 当这样声明这两个字符串时final, 比较表达式在这种情况下返回。为什么有所作为?它与实习生池有关系吗,还是我被误导了? 问题答案: 当你将(是不可变的)变量声明为,并使用编译时常量表

  • 问题内容: 我想知道在MS SQL Server 2005中是否有办法做到这一点: 这可能吗? 问题答案: 有可能,但是需要使用动态SQL。 我建议先阅读动态SQL的诅咒和祝福,然后再继续… 动态SQL只是一条SQL语句,在执行前由字符串组成。因此,通常的字符串连接发生。每当您想以不允许的SQL语法执行某些操作时,都需要使用动态SQL,例如: 单个参数表示IN子句的逗号分隔值列表 一个既代表值又代

  • 问题内容: 有时我们有几个类,这些类的某些方法具有相同的签名,但是与声明的Java接口不对应。例如,和(在中的其他几个 )中都有一个方法 现在,假设我希望对具有该方法的对象进行一些操作。然后,我想有一个接口(或者自己定义),例如 这样我可以写: 但是,可悲的是,我不能: 此演员表将是非法的。编译器 知道 这 是不是 一个,因为类没有宣布实现该接口...... 然而“实际上”实现它 。 有时这会带来