代码之家  ›  专栏  ›  技术社区  ›  Andriy Drozdyuk Pickels

从字符串创建Java方法?

  •  3
  • Andriy Drozdyuk Pickels  · 技术社区  · 15 年前

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

    class Car{
    
         new Method("getFoo", {
              return 1+1;
         });
    }
    
    //Use it
    Car car = new Car();
    car.getFoo();
    

    编辑:我添加了一个目的,为什么我需要这个。为了在使用Jersey及其UriBuilder时不硬编码方法名,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 回复  |  直到 15 年前
        1
  •  2
  •   stacker    15 年前

    这不可能像你描述的那样。

    asm 库来创建java字节码。

        2
  •  1
  •   BalusC    15 年前

    根据目的,为什么不只使用一个方法,让它根据调用方和参数的不同来执行不同的操作/行为呢?

        3
  •  0
  •   ewernli    15 年前

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

    让我澄清一下。我猜你在用 UriBuilder UriBuilder公司

    不过,我对jax-rs不太熟悉,而且不知道您到底想要实现什么(您的编辑确实提供了更多的信息,但没有解释您心中的最终目标),我不知道这是否有意义。但这可能是一条可以遵循的轨迹。

        4
  •  0
  •   Luca Molteni    15 年前

    如果您可以考虑在JVM上使用另一种语言, Groovy