我學習的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秒)
你的變量名是'stringDiziYaz',而不是'StringDiziYaz'。 – Bubletan