簡體   English   中英

Java,在不知道參數的情況下強制執行方法

[英]Java, force implementation of method without knowing parameters

我有一個執行基本操作的抽象類,現在我想強制每個派生類都使用“檢查”方法,但要點是我對該方法一無所知。 例如,抽象類:

public abstract class Service<T extends Transport> {

  public T getTransport(int id) { 
    [...] 
  }

  public abstract boolean checkTransport(T transport, ...);

}

和兩個實現類:

public ServiceAAA extends Service<ClassA> {

  public boolean checkTransport(ClassA t) {
    [...]
  }

}

public ServiceBBB extends Service<ClassB> {

  public boolean checkTransport(ClassB t, Integer value, Integer otherValue) {
    [...]
  }

}

ServiceBBB需要兩個參數來檢查類ClassB的對象t。 當然這是行不通的,有沒有一種方法可以強制子類在不使用“ Object ...”表示法的情況下實現checkTransport方法?

不,沒有。

讓我們假設一個辦法。 您如何從抽象的Service類或任何引用了此對象類型為Service<...>調用站點調用此方法? 沒有辦法知道特定子類的方法的期望,因此也就沒有辦法調用該方法。

解決此問題的一種方法是將檢查程序作為類傳遞給Service。 也就是說,使用合成代替繼承。 如果這樣做,則可以使檢查器的界面根本不接受任何額外的參數(例如, Predicate可能起作用),並且實現該檢查器的特定子類可以在構造時傳遞參數。

暫無
暫無

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

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