2011-08-16 164 views
1

我想增加一個額外的參數發送()在功能覆蓋抽象

在DumpSequence.java:

private static Receiver sm_receiver = new DumpReceiver(System.out, true); 

sm_receiver.send(message, lTicks); (Work) 
sm_receiver.send(message, lTicks, addParam1); (Won't work) 

DumnpReceiver.java我試圖增加額外的PARAM這是lTimeStamp2:

public void send(MidiMessage message, long lTimeStamp, long lTimeStamp2) {...} 

錯誤:

DumpSequence.java:136: send(javax.sound.midi.MidiMessage,long) in javax.sound.mi 
di.Receiver cannot be applied to (javax.sound.midi.MidiMessage,long,long) 
       sm_receiver.send(message, lTicks, lTicks); 
         ^
.\DumpReceiver.java:21: DumpReceiver is not abstract and does not override abstr 
act method send(javax.sound.midi.MidiMessage,long) in javax.sound.midi.Receiver 
public class DumpReceiver 
    ^
2 errors 

回答

0

如果你擴展一個抽象類,它需要定義所有的抽象方法,或者它需要抽象類。

或者,如果你是重載方法則只是刪除@Override註釋

請參見

+0

AFAIK接口,他沒有問這個。他想給'send'方法添加一個參數,並從'sm_receiver'中調用它,一個'Receiver'變量 – Serabe

+0

@Serabe我遲到了..已經將它包含在答案中 –

+0

噢,我沒有使用任何@Override註釋。 – thunder31

0

如果你想打電話send(MidiMessage message, long lTimeStamp, long lTimeStamp2)你需要使用一個DumpReceiver例如,不是Receiver之一。不存在這樣的方法,在接收器`

private static DumpReceiver sm_receiver = new DumpReceiver(System.out, true); 

編輯:通過繼承,則仍然可以使用它作爲一個純Receiver對象。

+0

還是一樣的錯誤,我相信是一個接口,不是抽象的。有沒有辦法將DumpSequence.java中的值傳遞給DumpReciever.java?我知道Java不具備讀全局變量的能力。 – thunder31

+0

你在修改正確的變量嗎?此外,如果你發現自己這樣做,通常是一個壞主意(TM)。可能有一種解決方法可以使用,所以這不是必需的。 – Serabe

+0

是的,修改正確的變量。我對Java的知識有限,有兩種使用兩步法的方法,但對我來說並不是很有效。 – thunder31

1

從線21

+0

哪個?我不太明白。 – thunder31

0

你仍然必須實現send(javax.sound.midi.MidiMessage,long)刪除@Override批註,即使你不使用它 - 它要求你實現

+0

有沒有辦法將DumpSequence.java中的值傳遞給DumpReciever.java?我知道Java不具備讀全局變量的能力。 – thunder31