【问题标题】:How to replace/substitute any recurring class or method name with shorter or simpler string in Java如何在 Java 中用更短或更简单的字符串替换/替换任何重复出现的类或方法名称
【发布时间】:2017-08-12 15:34:01
【问题描述】:

好的,所以我想做的是为一长串重复出现的类或对象名称分配一个备用名称。例如

public class Example
{
    public static void main(String[] args)
    {
      Hello k= new Hello();
      k.HelloWorld();
    }
}
class Hello
{
   public void HelloWorld()
   {
       System.out.println("Hello World");
   }
}

所以我想在这里发生的是我想保留方法“HelloWorld”的名称,但我想使用“HW”(比如)从主方法访问“HelloWorld”,这样我就可以写

 k.HW();

无需添加超过 2 行代码即可调用“HelloWorld”。

我知道它微不足道,但我只是好奇,想知道它是否可能。

【问题讨论】:

  • 创建一个指向HelloWorld的方法HW。但显然这是一个糟糕的主意。 public void HW() { HelloWorld(); } 1 行完成。
  • 你的问题到底是什么??
  • 记住简短而神秘的方法名称只是糟糕的代码。不要为了简短而牺牲清晰度。
  • 请不要那样做!我保证您会在一个月内查看该代码并且不知道它在做什么!
  • Java 被设计成罗嗦,写起来有点乏味,但“易于阅读”。人们可以争论他们的成功程度。但是用两个字母的缩写来命名你的所有类以节省一点打字不是Java风格。这也不是一个好主意。当你在 6 个月后回到那个代码时,你会记得所有的缩写吗?培训新员工需要多长时间?

标签: java class methods replace substitution


【解决方案1】:

在编译时,调用的方法必须与现有方法的确切名称匹配。
所以你必须写:

Hello k= new Hello();
k.HelloWorld();

保留有意义的名称很重要。

现在现代 IDE 可以帮助您。
您可以编写类似的东西,然后自动完成机制可以通过提出匹配方法来帮助您。

以 Eclipse 为例,输入:

k.hw + ctrl space(默认自动补全键),Eclipse 将在Hello 类中搜索以h(大写或小写)开头并具有W 大写字符的方法。
所以它会提出这个方法(HelloWorld()),你只需要选择它,它就可以完成带有方法调用的代码。

【讨论】:

  • 这是一个非常酷的技巧,谢谢,我相信很多现代编译器都有这个功能,我一定会使用它
【解决方案2】:

无论您使用哪种 IDE,都存在限制。

Lombok (https://projectlombok.org) 之类的工具允许您停止在类上编写 getter 和 setter 方法,因此您的 POJO 会变得更小,但是您可以从任何地方调用任何 getter 或 setter。

但那是 IDE 修改。

如果您想在运行时执行此操作,您可以使用反射和 Javassist 执行此操作。

Javassist 允许您在运行时创建和修改类,您可以通过编程方式添加 HW() 方法,然后使用 Reflection (Method.invoke()) 调用它

【讨论】:

  • intelliJ 让您选择一个变量,然后按 alt + enter,并自动创建 getter 和 setter。我确定在 eclipse 中有类似的功能。
  • 是的。 Lombok 旨在不硬编码 getter 和 setter。对于增加代码覆盖率非常有用。
  • 这是一个非常令人印象深刻的技术,但问题是......它是否可以在 2 行或更少的代码行中解决问题?它的效率如何?
  • 您没有明确说明问题所在。你想达到什么目的?你的问题没有任何背景。解释你想要做什么,更重要的是,为什么
  • 我提到 lombok 是因为,至少据我所知,您想要做的是使用缩写方法来引用代码中存在的实际方法。要在开发时做到这一点,你必须有一个允许这种技巧的修改过的 IDE。
猜你喜欢
  • 2013-06-23
  • 1970-01-01
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-31
  • 2020-04-16
相关资源
最近更新 更多