簡體   English   中英

抽象層:離預期的運行時對象有多遠?

[英]Layers of Abstraction: How far away from the intended Runtime Object?

我希望這就像我腦海中一樣清晰。

我想我了解多態的本質。 但是我想到了一個主意。 想象一下,我需要一個層次結構中更底層的類的服務:

java.lang.Object繼承

..

java ... TheirClass實現ItheirClass

public class MyClass1 {
 private Object theirClass;

 public MyClass1(Object thierClass) {
    this.theirClass = (ItheirClass) theirClass;
 }
}

要么

public class MyClass2 {
 private ItheirClass theirClass;

 public MyClass2(ItheirClass thierClass) {
    this.theirClass = theirClass
 }
}

首選哪個,為什么? 在這兩者中或僅在第一個實現中都需要對傳遞給構造函數的對象進行“ instanceOf”檢查嗎? 謝謝。

后者是優選的。

如果您犯了一個錯誤並為每個參數提供了錯誤類型的參數,則后者將在編譯時提醒您,但前者直到運行時才會失敗。

一個較小的問題是,類型轉換不是Java中的自由操作,因此,如果在大量使用的代碼中進行類型轉換,則使用前者不會帶來任何好處,因此您將承擔較小的運行時性能負擔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM