2011-08-16 128 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