假设我们有一个具有简单集合(例如列表)的类。类包含一个构造函数、getter和setter。有人告诉我,直接设置集合是一种不好的做法。
class Example{
private String id;
private List<String> names;
public Example(String id, List<String> names){
this.id = id;
this.names = names;
}
public String getId(){
return id;
}
public List<String> getNames(){
return names;
}
public void setId(String id){
this.id = id;
}
public void setNames(List<String> names){
this.names = names;
}
}
有人能指出编写setNames()
方法的缺点吗?
set和get操作背后的逻辑是允许验证或替换内部表示,如果让一个外部类来设置特定的实现,您就会失去对插入逻辑的控制(允许重复?是有序的?,是可变的?),并且您会使对象更难使用,因为它的用户必须决定什么时候他们很可能不关心。
问题内容: 我们都知道Java在(被认为是“常用” )范围内为数字缓存(以及一些其他类型)。 缓存的设计如下: 我知道可以通过为JVM提供参数来扩展值: 我不明白的是为什么我们不允许覆盖该值? 请注意,我并不是想找到一种解决方法,而是要理解为什么出于某些晦涩的原因而不允许这样做。 问题答案: 发现对此已经存在未解决的RFP。 乔·达西(Joe Darcy)对这个问题发表了评论: 可以想象也可以缓存
我有一个问题,关于什么是正确的做法,使用SwingU实用程序的调用稍后方法。 所以首先,我想确认我理解正确。 据我所知,对GUI的更改必须在EDT上完成,因为Swing组件不是线程安全的。invokeLater方法将Runnable作为参数,该Runnable中包含的任何内容都将在EDT上运行。因此,对Swing组件的任何调用都被放入一种队列中,在EDT上一次执行一个。 有了这些,我的问题是:使用
问题内容: 从文档中: 注意: AngularJS指令属性采用带嵌入式表达式的表达式 或 插值标记。将插值标记嵌入表达式中被认为是 不好的做法 : — AngularJS开发人员指南-插值 我正在寻找一个写得很好的规范答案,可以给读者指出。 问题答案: 从文档中: 为什么混合插值和表达式是不好的做法: 它增加了标记的复杂性 由于插值本身是一个指令,因此不能保证它适用于每个指令。如果另一个指令在插值
问题内容: 在回答了有关如何使用强制释放Java中的对象(那个家伙正在清除1.5GB的HashMap)的问题后,有人告诉我手动调用是一种不好的做法,但是注释并不完全令人信服。此外,似乎没有人敢于赞成,也没有反对我的答案。 有人告诉我这是一种不好的做法,但是后来我又被告知,垃圾收集器的运行不再系统地停止世界,而且它也可以有效地被JVM用作提示,所以我有点不知所措。 我确实知道,JVM在需要回收内存时
问题内容: 我们的代码库中有几个空的抽象类。我觉得很丑。但是除了这个非常愚蠢的原因(丑陋)之外,我是否应该将其重构(例如,插入空接口)? 否则,代码将很健壮并经过良好测试。因此,如果仅出于“审美”原因,我将通过并保留空的抽象类。 你怎么看? 编辑: 1)“空抽象类”的意思是: 2)“空”的原因:休眠。我根本不掌握这个持久性框架。我只知道不能将接口映射到表,并且由于这个技术原因,类比接口更受欢迎。
在Kubernetes文档中,它提到使用的缓存语义使得ImagePullPolicy非常高效。我想选择不同的ImagePullPolicy的原因是什么?