2017-10-28 9 views
0

Javaで内部クラスを調べています。異なるアクセス修飾子を持つ内部クラスを使用する例があります。私がtitle.Asで述べたエラー。静的な変数を使用することはできませんが、非静的なスコープでメソッドを使用することはできませんが、私は理解していない私は私の文字列array.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で[])を参照することができません静的コンテキストから innerclasses.AlanlaraErisim.main(AlanlaraErisim.java:42) /Users/sametsahin/Library/Caches/NetBeans/8.2/executor-snippets/run.xml:53:Java返される:1 BUILD FAILED合計時間:1秒)

+0

変数名は 'StringDiziYaz'ではなく' stringDiziYaz'です。 – Bubletan

答えて

0

このエラーはdiziYaz()オブジェクトメソッド(非静的)なので、クラス(StringDiziYaz)から参照できないことを示します。タイプはStringDiziYazのオブジェクトを使用してアクセスする必要があります。

あなたは

stringDiziYaz.diziYaz(stringDizi); // capitalization of stringDiziYaz changed 

StringDiziYaz.diziYaz(stringDizi); 

を変更する場合は、エラーがあってはなりません。おそらくあなたは単にタイプミスをしたでしょうか?

関連する問題