Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java在编译时生成代码?_Java_Code Generation_Compile Time - Fatal编程技术网

使用Java在编译时生成代码?

使用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

我创建了一组表示RESTful资源的类,以及实际上执行HTTP请求以检索和构建对象的其他帮助程序。 我的课程是这样的:

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类使用反射。我会考虑使用速度帮助模板类。在您的情况下,这可能有点过头了,但当您生成更多代码时,它可能会很有用。

您是否尝试过使用依赖项注入在实例化时生成类


如果客户机代码是动态的,那么客户机代码的用户应该如何处理这些问题?客户机代码用户应该知道要使用哪些类/方法,但我想确保代理类始终是最新的。我想要一些更轻松的,但感谢您的提示。