【发布时间】:2018-08-28 12:50:54
【问题描述】:
我在从接口调用默认方法时遇到问题。这是我的代码:
界面:
public interface Pozdrav {
public static void stat(){
System.out.println("Ja sam staticni metod");
}
default void osn(){
System.out.println("Ja sam osnovni metod");
}
}
主类:
public class KonkretniPozdrav implements Pozdrav{
public static void main(String[] args) {
Pozdrav.stat();
}
}
现在,我需要调用默认方法Pozdrav.osn();,但是当我这样做时,我收到了这个错误:
错误:(8, 16) java: 不能从静态上下文引用非静态方法 osn()。
如何调用这个默认方法?
【问题讨论】:
-
你没有显示你尝试调用
osn() -
我知道。我使用了 Pozdrav.osn();但它没有用,所以我删除了它。
-
忘记它是默认方法的事实;从调用者的角度来看,它只是一个普通的接口方法。您可以像调用任何其他接口方法一样调用它——在接口的实例上。
-
哦,这很有帮助。我不知道为什么静态方法有效,而默认方法无效。那么,这意味着我也可以通过实例化来调用静态方法?
标签: java interface java-8 default-method