我最近读到过没有在Java中使用getter和setter(例如When are getters and setters justified)。
我不知道这实际上是否是进行面向对象编程的最佳方式。无论如何,假设我的代码中没有使用getter,我如何在关系数据库中存储数据?两年前我开始使用Java时,我常常做类似以下的事情:
public void createTitle(Title title) {
// ... some code here ...
String sql = "INSERT INTO titles (title_id, name) "
+ "VALUES (TITLES_SEQ.NEXTVAL,?)";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, title.getName()); // Here is the getter
preparedStatement.executeUpdate();
// ... other code here ...
}
如果我没有title
getter,如何在我的关系数据库中保存name
及其属性(在本例中为title.getName()
)?这只是一个例子,但我希望它有意义。
一些相关的讨论:
答案 0 :(得分:0)
我不知道为什么......但是你必须如何将标题的属性名称设为public并通过点符号e.G title.name
访问它答案 1 :(得分:0)
为避免使用getter / setter,只需将变量设为public(或保护,视具体情况而定),以便dot-accessors能够在其位置工作。
title.name
代替title.getName()
硬币的两面是:
有人说公共字段很糟糕,暴露太多,另一个说简单对象保持简单并且不需要getter / setter来完成同样的事情。
如果您非常需要禁止设置变量(只读),那么将其私有化并制作一个getter是可行的方法。 对于只写变量,有一个类似的过程,但只有setter而没有getter。
根据我的个人经验,如果我可以在不向最终用户暴露危险副作用的情况下暴露变量,那么我继续将该字段公之于众。否则,我会尽可能地关闭该字段的访问权限。