- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在Java中有以下界面
public interface IProperty<T extends Comparable<T>> {
String getName();
Collection<T> getAllowedValues();
Class<T> getValueClass();
String getName(T value);
}
class EnumerationProperty1[T <: Enumeration](val enum: T, val name: String) extends IProperty[enum.Value] {
override def getName = name
override def getValueClass = classOf[enum.Value]
override def getName(value: enum.Value): String = value.toString
override def getAllowedValues: java.util.Collection[enum.Value] = enum.values.toList
}
class EnumerationProperty2[T <: Enumeration](val enum: T, val name: String) extends IProperty[T#Value] {
override def getName = name
override def getValueClass = classOf[T#Value]
override def getName(value: T#Value): String = value.toString
override def getAllowedValues: java.util.Collection[T#Value] = enum.values.toList
}
object EnumerationPropertyAnonymous {
def create[T <: Enumeration](enum: T, name: String) = {
new IProperty[enum.Value] {
override def getName = name
override def getValueClass = classOf[enum.Value]
override def getName(value: enum.Value): String = value.toString
override def getAllowedValues: java.util.Collection[enum.Value] = enum.values.toList
}
}
}
最佳答案
啊,使用路径依赖类型的乐趣......Enumeration#Value
是路径依赖类型。
那是 Value
的实际类型取决于 Enumeration
的当前实现实例.
因此,如果您有两个 Enumerations
像
object A extends Enumeration {
val first = Value(0, "first")
}
object B extends Enumeration {
val first = Value(0, "first")
}
false
.
A.first == B.first
A.first.isInstanceOf[B.first.type]
A.first.isInstanceOf[Enumeration#Value]
// it is recommended to use converters instead of conversions.
import scala.collection.JavaConverters._
case class EnumPropertyFactory[T <: Enumeration](val enum: T) {
def apply(name: String) = new EnumerationProperty(name)
class EnumerationProperty(val name: String) extends IProperty[enum.Value] {
override def getName = name
override def getValueClass = classOf[enum.Value]
override def getName(value: enum.Value): String = value.toString
override def getAllowedValues: java.util.Collection[enum.Value] = enum.values.toList.asJavaCollection
}
}
// can be used with something like
val enum1PropertyFactory = EnumPropertyFactory(EnumOne)
val foo = enum1PropertyFactory("foo")
val bar = enum1PropertyFactory("bar")
val
.记住类定义在 java 中的样子:
class EnumerationProperty1<T extends Enumeration> extends IProperty<enum.Value> {
public EnumerationProperty1(T enum, String name) { ... }
}
enum
在调用构造函数之前无法知道。
Enumeration#Value
有关。依赖路径并且使用
#
完成巫术;)
关于scala - 为什么我不能在没有丑陋的匿名类的情况下在 Scala 中实现这个 Java 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35129402/
kable(head(mtcars) %>% kable_styling(bootstrap_options = c("striped", "hover")) 使用 kable 表(见上文)的普通
我试图很好地显示 NSTextView 中突出显示的段落。现在,我通过创建一个带有背景颜色的 NSAttributedString 来做到这一点。这是一些简化的代码: NSDictionary *at
我的站点位于 http://www.idataresearch.net 我正在为导航菜单使用 Dynamic Drive 的 ddmoothmenu 脚本。我真的很喜欢这个脚本,很高兴看到以前的开发人
我在 Ubuntu EC2 实例上运行 nginx、gunicorn、django。整个网站运行良好。除了管理员。管理员无法正常显示。我运行“python manage.py Collectstati
在一个本身嵌套在一个或多个父数组/结构/union 中的数组/结构/union 中读取多个数字/字符串的最佳方法是什么? 没有临时变量的第一个例子: printf("%d %d\n", a[9][3]
我正在编写一个与 mingw 一起使用的包装层,它为应用程序提供了一个虚拟的 UTF-8 环境。处理文件名的函数是从 UTF-8 转换并调用相应的“_w”函数等的包装器。我遇到的最大问题是 Windo
在我的回答中Clojure For Comprehension example我有一个处理自己输出的函数: (defn stream [seed] (defn helper [slow]
我使用的是 bootstrap 4.0 alpha,没有其他样式。布局非常丑陋,日历只显示一列而不是表格。知道为什么以及如何做吗? 我从网站上注意到以下内容,但我不明白我应该怎么做: note: Th
我是一名优秀的程序员,十分优秀!