gpt4 book ai didi

java - 有条件地生成方法体以满足Java中的大接口(interface)

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:30:46 26 4
gpt4 key购买 nike

Java OpenGL GL 接口(interface)包含大约 2000 个方法,出于调试目的,我想包装一个实例并在进行一些日志记录时委托(delegate)调用它。在每种情况下,日志记录代码都可以推送到相同的方法,因此编写方法实现的任务看起来可以自动化。我正在尝试做的一个例子:

import javax.media.opengl.GL;

public class GLErrorLogger implements GL {
private final GL backing;

public GLErrorLogger(GL delegateToMe) {
backing = delegateToMe;
}

private void checkErrorCode() {
// Log frame and thread details depending on gl state
}

/**
* Example of a method
*/
@Override
public int glGenLists(int arg0) {
checkErrorCode();
int retVal = backing.glGenLists(arg0);
checkErrorCode();
return retVal;
}

// rest of methods here...
}

换句话说,将方法名称和参数(减去它们的类型)复制到对支持对象的调用中,围绕对日志记录方法的调用,如果有返回类型,则将结果分配给该类型的变量并在方法结束时返回它。

我考虑过创建一个一次性 eclipse 代码模板来自动生成方法,但是没有一种立即明显的方法来对返回类型进行模式匹配。任何人都可以建议一种在 Eclipse 或其任何代码生成工具中执行此操作的方法,以节省我拉出正则表达式工具包的时间吗?

最佳答案

您可能希望使用方面来为您创建必要的字节码,而不是生成所有源代码。在此处查看跟踪方面示例:Traceing Aspect Example .

作为替代方案,如果您不想将 AspectJ 用作第三方库,则可以创建一个 Java 动态代理。请引用Dynamic Proxy Tutorial

关于java - 有条件地生成方法体以满足Java中的大接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11791367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com