获取非静态方法不能从静态上下文引用的错误
问题描述:
我学习的Java.There内部类是采用内部类与不同的访问的一个例子modifiers.I写的代码只是我看的书,但我得到一个错误,我在标题中提到。我知道我们不能使用静态变量,方法在非静态范围内,但我不明白的是,我得到这个错误只与我的字符串数组..Integer数组工作正常。什么是我错过了吗?获取非静态方法不能从静态上下文引用的错误
package innerclasses;
public class AlanlaraErisim {
private class StringDiziYaz{
private void diziYaz(String[]dizi){
for(String x: dizi){
System.out.println(x + " ");
}
}
}
protected class IntegerDiziYaz{
protected void diziYaz(Integer[]dizi){
for(Integer x: dizi){
System.out.println(x + " ");
}
}
}
public static void main(String[] args) {
AlanlaraErisim.StringDiziYaz stringDiziYaz = new AlanlaraErisim().new StringDiziYaz();
String[] stringDizi = {"abc","def","ghi","jkl","mno"};
StringDiziYaz.diziYaz(stringDizi); //Gives the error
AlanlaraErisim.IntegerDiziYaz integerDiziYaz = new AlanlaraErisim().new IntegerDiziYaz();
Integer[] intDizi = {1,2,3,4,5,6};
integerDiziYaz.diziYaz(intDizi); //Works fine
}}
那输出:
异常在线程 “主” 了java.lang.RuntimeException:不可编译源代码 - 非静态方法diziYaz(java.lang.String中[])不能被引用从静态上下文 at innerclasses.AlanlaraErisim.main(AlanlaraErisim.java:42) /Users/sametsahin/Library/Caches/NetBeans/8.2/executor-snippets/run.xml:53:Java返回:1 BUILD FAILED(总时间:1秒)
答
错误告诉你diziYaz()
是对象方法(非静态),所以不能从类(StringDiziYaz
)引用它。您必须使用StringDiziYaz
类型的对象访问它。
如果更改
StringDiziYaz.diziYaz(stringDizi);
到
stringDiziYaz.diziYaz(stringDizi); // capitalization of stringDiziYaz changed
话,应该没有错误。也许你只是犯了一个错字?
你的变量名是'stringDiziYaz',而不是'StringDiziYaz'。 – Bubletan