Scala中POJO上的java模式匹配?
我正在尝试将一些旧的Scala代码更新为新的API
在我使用的一个库中,出于兼容性原因,一个case类已转换为一个简单的POJO
我想知道是否仍然可以以某种方式为Java类使用模式匹配
假设我有一个简单的Java类,如:
public class A {
private int i;
public A(int i) {
this.i = i;
}
public int getI() {
return i;
}
}
编译后,我想在模式匹配中使用它,比如:
class Main extends App {
val a = ...
a match {
case _ @ A(i) =>
println(i);
}
}
对于上面的代码,我显然得到了一个错误:Main.scala:7: error: object A is not a case class constructor, nor does it have an unapply/unapplySeq method
这里有什么我可以用的技巧吗
提前谢谢
# 1 楼答案
这是一个有点晚在这里的微妙,但
# 2 楼答案
@som snytt的答案是正确的-但如果您这样做只是为了模式匹配,那么我更喜欢更简洁的方法:
Ur
是一种自命不凡的“原创”说法,但它只需要两个字母# 3 楼答案
自己写
unapply
: