使用Java在编译时生成代码?
我创建了一组表示RESTful资源的类,以及实际上执行HTTP请求以检索和构建对象的其他帮助程序。 我的课程是这样的:使用Java在编译时生成代码?,java,code-generation,compile-time,Java,Code Generation,Compile Time,我创建了一组表示RESTful资源的类,以及实际上执行HTTP请求以检索和构建对象的其他帮助程序。 我的课程是这样的: class MyResource{ Attribute id = new Attribute(this, long); Attribute name = new Attribute(this, String); /* etc */ } 现在碰巧我想使用POJO类来插入一个喜欢处理POJO的框架 我希望有这样的代理: class MyResourcePr
class MyResource{
Attribute id = new Attribute(this, long);
Attribute name = new Attribute(this, String);
/* etc */
}
现在碰巧我想使用POJO类来插入一个喜欢处理POJO的框架
我希望有这样的代理:
class MyResourceProxy{
private MyResource realResource;
public MyResourceProxy(MyResource o){realResource = o;}
public long getId(){
return realResource.id.get();
}
public void setId(long value){
realResource.id.set(value);
}
public String getName(){
return realResource.name.get();
}
public void setName(String value){
realResource.name.set(value);
}
}
我不想维护这些代理类的代码,只想维护“资源类型”主类
我查看了内省,发现了一个关于如何按需生成上述代理代码的提示。
问题是:是否可以在编译时生成代码,然后将其与库一起编译?也许我走错了方向,但我正在做一些无趣的事情;)
你觉得怎么样?
谢谢 这取决于您构建的系统是什么,如果您是指
javac
,那么我会说不,但如果您使用ant
或maven
,那么您可以
代码生成器有很多例子
在您的情况下,我将对已编译的MyResource类使用反射。我会考虑使用速度帮助模板类。在您的情况下,这可能有点过头了,但当您生成更多代码时,它可能会很有用。您是否尝试过使用依赖项注入在实例化时生成类
如果客户机代码是动态的,那么客户机代码的用户应该如何处理这些问题?客户机代码用户应该知道要使用哪些类/方法,但我想确保代理类始终是最新的。我想要一些更轻松的,但感谢您的提示。