【问题标题】:Is there a way in eclipse to to generate a simple class with getters and setterseclipse中有没有办法用getter和setter生成一个简单的类
【发布时间】:2017-02-21 15:11:04
【问题描述】:

所以基本上,我已经制作了很多类,它们只是一些逻辑信息的容器。

例如课本;具有 ISBN、标题、作者属性;具有所有属性的 getter 和 setter。

我知道 eclipse 可以自动生成 getter 和 setter,但是 a) 它没有正确地将属性 cmets 复制到它们上,b) 它仍然很慢,因为在输入所有属性后,您必须右键单击每个属性并自动生成 cmets。

我知道这很简单,但考虑到在过去几年中我可能已经花费了几天以上的时间来做这件事,这让我想知道是否有更好的选择。

我在想象一个类似向导的东西,你只有一个表格,你可以输入你的属性类型、名称和描述,并勾选它是否允许为空,是否允许编辑,如果你想要它由构造函数填充,然后您将获得一个包含所有正确 cmets、用于检查 null 的验证调用以及 getter 和 setter 的类。

如果没有,有没有办法可以扩展 eclipse 来做这样的事情?我可以构建自己的外部程序,但是在外部执行它似乎有点笨拙,然后每次都必须更新 eclipse。

【问题讨论】:

  • 如果你在评论你的 getter 和 setter,你在做无用的工作。
  • 使用插件机制?虽然这样的事情在过去就已经存在。我不再使用 Eclipse,所以我不知道现在有什么可用/可能。
  • 解决所有问题的好方法;只需切换到不同的编程语言。
  • @DwB - 你建议如何改进对象设计?我正在创建的对象用于将相关属性组移植在一起。我正在使用 getter 和 setter 从类的内部实现中抽象出来。您是否建议我在不使用任何数据的情况下进行编程?
  • @DNAj 我可以编写一个程序,但是作为程序员的一部分并不是每次你需要一个新的轮子时都重新发明轮子,因此我在这里问在我走之前它是否已经存在去做吧。

标签: java eclipse


【解决方案1】:

为了避免重复文档(如果这是您想要实现的),我使用:

/**
 * Represents the book title
 */
private String title;

/**
 * Get {@link #title}
 */
public String getTitle() {
    return title;
};

您可以使用以下 cmets 模板让 eclipse 自动生成它:

/**
* Get {@link #${field}} 
*/

【讨论】:

  • 这个其实超级好用
【解决方案2】:

你可以使用http://immutables.github.io/

它是一个生成 Java 类的注解处理器。你不需要任何插件来运行它。启用注释处理就足够了。

您创建一个抽象,而库为您生成具体实现。甚至对应的 javadoc 也会被复制到生成的类中。

例如,您必须创建如下界面:

import org.immutables.value.Value;
// Define abstract value type
@Value.Immutable
public interface ValueObject {
  String name();
  List<Integer> counts();
  Optional<String> description();
}

然后你像这样实例化它:

// Use generated immutable implementation
ValueObject valueObject =
    ImmutableValueObject.builder()
        .name("My value")
        .addCounts(1)
        .addCounts(2)
        .build();

还有更多可用选项。

【讨论】:

    猜你喜欢
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    相关资源
    最近更新 更多