相关疑难解决方法(0)

使用scala中的重载构造函数定义自己的异常

在java中,异常至少包含以下四个构造函数:

Exception() 
Exception(String message) 
Exception(String message, Throwable cause) 
Exception(Throwable cause) 
Run Code Online (Sandbox Code Playgroud)

如果你想定义自己的扩展,你只需要声明一个后代异常并实现每个所需的构造函数调用相应的超级构造函数

你怎么能在scala中实现同样的东西?

到目前为止,我看到了这篇文章和这个SO答案,但我怀疑必须有一种更简单的方法来实现这样一个共同的事情

scala exception

36
推荐指数
4
解决办法
2万
查看次数

将依赖对象传递给Scala中的父构造函数

假设我有以下类heirarchy:

class A()
class B(a:A)
class C(b:B)

class BaseClass(b:B, c:C)
Run Code Online (Sandbox Code Playgroud)

现在我想实现一个BaseClass的子类,它给出一个A的实例,并构造B和C的实例,并将它传递给它的超类构造函数.

如果我可以使用任意表达式,我会做这样的事情:

b = new B(a)
c = new C(b)
super(b, c)
Run Code Online (Sandbox Code Playgroud)

因为父构造函数的第二个参数依赖于第一个参数的值,但是我没有看到任何方法来执行此操作,不使用工厂函数或无偿的hack,例如:

class IntermediateSubclass(b:B) extends BaseClass(b, new C(b))
class RealSubclass(a:A) extends IntermediateSubclass(new B(a))
Run Code Online (Sandbox Code Playgroud)

有干净的方法吗?

constructor scala subclass

2
推荐指数
1
解决办法
2321
查看次数

标签 统计

scala ×2

constructor ×1

exception ×1

subclass ×1