0

我在 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 中,我还没有找到简单明了的解决方案。

4

2 回答 2

0

在您的示例中,您的所有方法都有实现,即使是空体。要检测到没有实现的方法,您需要将它们标记为抽象(您的类也将是抽象的),并且您需要编写一些反身代码。如果你想反省每个方法内部的代码,你可以处理它的堆栈跟踪。看看这里:如何使用堆栈跟踪或反射找到方法的调用者?

于 2012-09-03T18:54:27.077 回答
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(例如)的类不会编译,除非它定义了方法abc.

于 2012-09-03T19:03:11.323 回答