Java函数签名接受单一枚举值

贝内特哈德威克:

我有多个“类型”值的Java类,并可以把这些类型之一的一类。

我试图改变依赖于构造函数的实现Type使用Java的类型系统枚举,但无法找到如何做到这一点的任何信息。

public enum Type {
    A,
    B,
    C
}

public class Action {
    public Action(Type.A type, String value) {}
    public Action(Type.B type, Float value) {}
    public Action(Type.C type, String value) {}
}

是值得这种影响可能在Java中?喜欢的话是打字稿例如。

雷特里:

看来,你正在尝试以模型为三个相关类型

  • A,有一个字符串值,
  • B,用一个浮点值,并且
  • C,用字符串值。

如果是这样,Java的几乎要你做三个子类,A,B和C,抽象基类的,因为,Java并没有真正做不相交的总和类型(又名不交型,标签联合类型)非常好。

如何有一个单一类型的“标签”信息(这就是名称标签联合或标记和来自)在讨论这个堆栈溢出问题这可能是最好的在某个时候检查出的问题,因为很多想法都提供; 大多数使用泛型。

恕我直言,爪哇从来没有真正得到正确的方式做总和类型。Java的8推出自选,但“只有自选”,所以正确的和类型采取一些工作。

所以在此期间,考虑到通常的Java的解决方法:

  • 子类(叹气)
  • 静态工厂方法(因为你不能超载与枚举的构造函数:A,B和C都属于同一类型)。

编辑:见伟​​大的答案@ 9000这正好说明了如何实现静态工厂方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档