【问题标题】:Need some advice on dealing with many fields in Java需要一些关于处理 Java 中许多字段的建议
【发布时间】:2018-08-31 03:01:36
【问题描述】:

这可能是一个愚蠢的问题,但我正在开发一个 2-D Java 游戏,我的一个课程有很多字段。

与其为所有这些字段创建 getter 和 setter 并弄乱类,我认为最好只创建一个主要的 get 和 set 函数来接受这些参数: - 带有我要访问的字段名称的字符串值 - 将字段设置为的值本身(仅限 setter 函数)。

有没有更好的方法来做到这一点,不涉及将所有字段设置为公共或包私有,或者我是否走在正确的轨道上?

基本上我会创建一个数组来保存所有这些字段,但是在查看这些字段的函数时我会失去 NetBeans 自动完成的便利。

【问题讨论】:

  • 你可以看看使用 Lombok 库
  • Lombok 是一种选择,或者将其中一些变量放入一个集合中。或者,也许你的班级太杂乱了,应该分成多个班级。
  • 也许看看AutoValue
  • 你考虑过Properties吗?如有必要,您可以按类型对属性进行分组,但如果您不介意必须根据属性名称知道属性类型的脆弱性,则不必这样做。
  • Netbeans 的“封装字段”重构可以为您节省所有这些 getter 和 setter 的输入,如果这是您实际上试图避免的。但是你真的应该考虑将你的班级分成几个更小的班级,每个班级都有更少的字段。

标签: java


【解决方案1】:

简短的回答是,实现您的 getter 和 setter。 IDE 有向导可以帮助您(好),或者您可以使用注释:Java Getters and Setters(好)或预处理器(编写您自己的程序来解析您的源代码并为您编写 getter 和 setter)(可能不太好)。

长答案是你可以做你想做的事,如果你不想输入每个成员,你可以用反射 API 做到这一点:https://netjs.blogspot.com/2017/08/invoking-getters-and-setters-using-reflection-java.html

反射对于一个简单的项目来说并不是那么重要,但在编写一个对其实体具有高级访问权限的引擎(例如游戏中的调试工具)时可能会对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-11
    • 2014-05-21
    • 2023-03-24
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    相关资源
    最近更新 更多