在使用其他人写的Java代码时遇到的问题。
已有一个Listener.java文件单独定义了Listener这个接口
public interface Listener{
public void Received(String str);
}
在另一个类中有一段方法直接调用了这个借口:
public static void listenUp(String thingName, Listener listener)
想请问一下,假如我调用这个类中的listenUp方法的话第二个parameter也就是这个listener 应该怎么定义?
也就是如何调用这个listenUp方法。
目前尝试过新建一个class implements Listener
或者直接 Listener listener;
但都报错了
public interface Listener {
public void Received(String str);
}
public class ListenerImpl implements Listener{
@Override
public void Received(String str) {
System.out.println(str);
}
}
public class OtherClass {
public static void listenUp(String thingName, Listener listener){
listener.Received(thingName);
}
public static void main(String[] args) {
listenUp("test",new ListenerImpl());
}
}
三个类,一个是你的接口,一个是该接口的实现,一个是调用该接口的方法
首先它是个静态方法,不需要对象
你需要再构建一个类来实现Listener接口,并实现接口中的方法。或者调用listenUp的时候,在写第二个参数的时候写new Listener{},新创建一个匿名类,并实现Listener中的方法即可。
这里的接口是一个引用数据类型,作为此静态方法的形参
此外,我们可以通过创建一个类去实现该接口,此时再写一个这样的接口是无用的
因为作为静态方法的参数,我们需要把实现类对象new出来,再传参