相关疑难解决方法(0)

"编程到界面"是什么意思?

我已经看过几次提到这个,我不清楚这是什么意思.你何时以及为何会这样做?

我知道接口有什么作用,但事实上我不清楚这一点让我觉得我错过了正确使用它们.

如果你这样做是这样的:

IInterface classRef = new ObjectWhatever()
Run Code Online (Sandbox Code Playgroud)

你可以使用任何实现的类IInterface吗?你什么时候需要这样做?我唯一能想到的是,如果你有一个方法,你不确定除了实现之外将传递什么对象IInterface.我想不出你需要多久做一次.

另外,你怎么能写一个接受实现接口的对象的方法?那可能吗?

language-agnostic oop interface

791
推荐指数
17
解决办法
16万
查看次数

Java:为什么不应该将 clone() 用于防御性复制?

在 Effective Java(第 7 章)中,它说

还要注意,我们没有使用 Date 的 clone 方法来制作防御性副本。因为 Date 是非最终的,所以 clone 方法不能保证返回一个类是 java.util.Date 的对象:它可能返回一个专为恶意恶作剧设计的不受信任子类的实例。例如,这样的子类可以在创建时在私有静态列表中记录对每个实例的引用,并允许攻击者访问该列表。这将使攻击者可以自由支配所有实例。为防止此类攻击,请勿使用 clone 方法制作类型可被不受信任方子类化的参数的防御性副本。

我不太明白它的解释。为什么 clone() 不返回 Date 对象?实例怎么可能是不受信任的子类?

java effective-java

6
推荐指数
2
解决办法
1104
查看次数

标签 统计

effective-java ×1

interface ×1

java ×1

language-agnostic ×1

oop ×1