java *不是抽象的,并且未覆盖*中的抽象方法
先附上代码
import javax.sound.midi.*;
public class MiniMusicPlayer2 implements ControllerEventListener{
public static void main(String[] args){
MiniMusicPlayer2 mini=new MiniMusicPlayer2();
mini.go();
}
public void go(){
try{
Sequencer sequencer=MidiSystem.getSequencer();
sequencer.open();
int[] eventsIWant={127};
sequencer.addControllerEventListener(this,eventsIWant);
Sequence seq=new Sequence(Sequence.PPQ,4);
Track track=seq.createTrack();
for(int i=5;i<61;i+=4){
track.add(makeEvent(144,1,i,100,i));
track.add(makeEvent(176,1,127,0,i));
track.add(makeEvent(128,1,i,100,i+2));
}
sequencer.setSequence(seq);
sequencer.setTempoInBPM(220);
sequencer.start();
}catch(Exception ex){ex.printStackTrace();}
}
public void controlChange(ShortMessage event){
System.out.println("la");
}
public static MidiEvent makeEvent(int comd,int chan,int one,int two,int tick){
MidiEvent event=null;
try{ShortMessage a=new ShortMessage();
a.setMessage(comd,chan,one,two);
event=new MidiEvent(a,tick);
}catch(Exception e){}
return event;
}
}
报错为MiniMusicPlayer2.java:2: 错误: MiniMusicPlayer2不是抽象的, 并且未覆盖ControllerE
ventListener中的抽象方法controlChange(ShortMessage)
public class MiniMusicPlayer2 implements ControllerEventListener{
^
1 个错误
我看了很多解答,大多是讲某个大小写问题,但是我是照书打的,不知道错在哪。
顺带问一下,有没有教如何使用java API索引的网址和教学博客,我觉得自己用这个API好多都不知道怎么查
我将你的代码复制到我的环境上运行了一遍,发现是正常的,你的编译环境是否有问题?我的JDK版本是1.8的,不知道你的JDK是多少的?
用eclipse的话,这个public void controlChange(ShortMessage event)不用自己写,点击添加add uni...即可添加,然后在里面实现业务逻辑,说明一点,你这个和接口定义的不一样,一样的话,上面加个@overrride即可。。。但是一般都不用自己手动添加
controlChange的参数类型和父类一样么?检查看看
我将你的代码复制到我的环境上运行了一遍,发现是正常的,你的编译环境是否有问题?我的JDK版本是1.8的,不知道你的JDK是多少的?
这个方法重写得放在最后我用java11就是这样放中间就报错