我需要在运行时从给定的类获取所有接口(全部加载在类加载器中)。
例如,如果一个类是这样声明的:
trait B
trait C
trait D
class A extends B with C with D
Run Code Online (Sandbox Code Playgroud)
我想在运行时获取以下信息:A 依赖于 B、C 和D。java getInterfaces() (或 clapper 库中的interfaces())方法仅给出第一个依赖项,即:A 依赖于 B。
有办法实现吗?
我想通过反思,但我不知道如何?
让我说我有以下代码,我允许混合生物,因为有人可以混合和匹配物种(例如,只有纯人类或纯外星人),我想有一个方法,解释什么是'混入',这是叫say:
trait Person {
def say(): Unit
}
trait Human {
def say(): Unit = println("Hi, I am a human")
}
trait Dude extends Human {
override def say(): Unit = {
super.say()
println("Duuude!")
}
}
abstract class Alien(msg: String) extends Person {
def say(): Unit = println(s"Hi, I'm an alien: $msg")
}
class Hybrid(name: String) extends Alien("bleep") with Dude // does not work!
val someone = new Hybrid("John")
someone.say()
Run Code Online (Sandbox Code Playgroud)
这不能编译,因为:
error: overriding method say in class Alien …Run Code Online (Sandbox Code Playgroud)