从字符串创建Java方法?

时间:2010-06-11 14:27:22

标签: java

在Java中是否可以使用字符串而不是标识符来声明方法?

例如,我可以执行以下操作:

class Car{

     new Method("getFoo", {
          return 1+1;
     });
}

//Use it
Car car = new Car();
car.getFoo();

编辑:我正在添加目的为什么我需要这个。为了在使用Jersey及其UriBuilder时不对方法名称进行硬编码,这需要一个方法名称: https://jsr311.dev.java.net/nonav/releases/1.1/javax/ws/rs/core/UriBuilder.html

请参阅带签名的path()方法:

 public abstract UriBuilder path(java.lang.Class resource,
                            java.lang.String method)
                     throws java.lang.IllegalArgumentException

那么我可能只使用字符串常量而不用担心方法名称将与我传递给path()方法的字符串不同。

我希望我的问题很清楚,如果没有 - 让我知道,我可以澄清一下。

4 个答案:

答案 0 :(得分:2)

你所描述的方式是不可能的。

最接近的可能是创建java字节码的asm库。

答案 1 :(得分:1)

根据目的,你为什么不只是有一个方法,让它根据调用者和参数的不同行为/行为?

答案 2 :(得分:0)

在代码中将方法名称作为字符串确实不是很好,但是如果感觉来自你身边和jax-rs方面的反射的使用应该进行补偿,这样就不会发生这种情况。

让我澄清一下。我猜您正在使用UriBuilder,因为您想要公开服务或类似的东西。如果您反思该类并列出该方法,然后在UriBuilder中传递它们的名称,这也反映在该类上,则该方法永远不会在源中明确提及。

我不熟悉jax-rs,并且不知道你究竟想要实现什么(你的编辑确实提供了更多信息,但没有解释你想到的最终目标),我不喜欢不知道这是否有意义。但这可能是一条可以追随的轨道。

答案 3 :(得分:0)

如果您可以考虑在JVM上使用其他语言,Groovy可以这样做。