我是C++中静态元编程的粉丝.我知道Java现在有泛型.这是否意味着Java中可能存在静态元编程(即编译时程序执行)?如果是这样,任何人都可以推荐任何可以了解更多信息的好资源吗?
不,这是不可能的.泛型不如模板强大.例如,模板参数可以是用户定义的类型,基元类型或值; 但通用模板参数只能是Object
其子类型.
编辑:这是一个老答案; 自2011年以来,我们拥有Java 7,它具有可用于此类技巧的Annotations.
看看Clojure.它是一个带有宏的LISP(元编程),它运行在JVM上,并且与Java非常互操作.
"静态元编程"是什么意思?是的,C++模板元编程在Java中是不可能的,但它提供了其他方法,比C++中的方法更强大:
反射
面向方面的编程(@AspectJ)
字节码操作(Javassist,ObjectWeb ASM,Java代理)
代码生成(注释处理工具,Velocity等模板引擎)
抽象语法树操作(由流行的IDE提供的API)
即使在运行时也可以运行Java编译器并使用已编译的代码
没有最好的方法:每种方法都有其优点和缺点.由于JVM的灵活性,Java中的所有这些方法都可以在编译时和运行时使用.