小编tbr*_*uhn的帖子

在java中验证值对象(继承)

我想在将它们传递给系统的其他部分之前验证我的域对象.我要验证的所有对象共享相同的接口.问题是我无法弄清楚如何以一种好的方式写出来.我不想在我的值对象中移动验证.但我不想被迫做一个instanceOf-check.

一个例子:

public interface Vehicle {}

public class Car implements Vehicle {}

public class MotorBike implements Vehicle {}

public interface VehicleValidator {
    void validate();

}

public class CarValidator implements VehicleValidator {

    @Override
    public void validate() {}
}

public class MotorBikeValidator implements VehicleValidator {

    @Override
    public void validate() {}
}

public void process(Vehicle vehicle) {
    //TODO: validate vehicle
    doSomething(vehicle);
}
Run Code Online (Sandbox Code Playgroud)

在Scala中,我会做类似于http://debasishg.blogspot.se/2010/06/scala-implicits-type-classes-here-i.html的内容, 但这些语言结构在Java中是不可能的.

java validation inheritance design-patterns

8
推荐指数
1
解决办法
834
查看次数

Scala案例类层次结构

我在设计案例课时遇到了一些困难.简化版看起来像:

abstract class Base(s: Option[String]) {
   //code
}

case class CaseClass(s: Option[String] = None) extends Base(s) {
    //code
}
Run Code Online (Sandbox Code Playgroud)

我有一个方法,我想做的事情如下:

  def method(base : Base) = {
     //code
     base copy (s = Some("string"))
  }
Run Code Online (Sandbox Code Playgroud)

我当然得到:

 value copy is not a member of Base
Run Code Online (Sandbox Code Playgroud)

所以我想要做的是基于我的基类(不是案例类)创建一个新实例.显然,人们不能这样做.但是你如何以优雅的方式解决这个问题呢?

提前致谢!

inheritance scala class case hierarchy

5
推荐指数
2
解决办法
4822
查看次数