我在Java类中创建了一个未实现函数的层次结构,并且我想跟踪已经实现的函数,可以实现这些函数。
作为一个例子,这里有一长串未实现的函数依赖项,我想以编程方式分析,以确定哪些函数可以实现(给定已经实现的函数)。
//requires the functions b and c
public static void a(){
}
//does not require any functions to be implemented before being implemented
public static void b(){
}
//requires the function b
public static void c(){
}
public static void d(){ //requires the function a
}
public static void e(){ //requires the function a and c
}
public static void f(){ //requires the function a and c
}
//requires the functions a and f
public static void g(){
}
有没有办法确定在这里可以实现哪些上述功能(给定已经实现的功能列表)?在Javascript中,解决这个问题很简单(因为它可以在函数的原型中设置每个函数的属性),但在Java中,我还没有找到一个简单而简洁的解决方案。
答案 0 :(得分:0)
在您的示例中,即使是空体,您的所有方法也都有实现。要检测没有实现的方法,你需要将它们标记为抽象(你的类也是抽象的),你需要编写一些反身代码。如果要内省每个方法中的代码,可以处理其堆栈跟踪。看看这里:How do I find the caller of a method using stacktrace or reflection?
答案 1 :(得分:0)
界面的想法似乎非常适合你正在做的事情。这是一个接口层次结构,用于跟踪函数a
到d
:
interface HasA extends HasB, HasC {
public static void a();
}
interface HasB {
public static void b();
}
interface HasC extends HasB {
public static void c();
}
interface HasD extends HasA {
public static void d();
}
实现HasA
的类(例如)除非定义方法a
,b
和c
,否则不会编译。