これがなぜ機能しているのか理解できません。教えてください。Classを参照して静的フィールドへのアクセスを回避しますか?
Config CFIG = new Config();
Tile selectedTile = CFIG.tileGallery.get(1);
System.out.println("This is the name:" + selectedTile.getName());
Feature selectedFeature = CFIG.featureGallery.get(3);
System.out.println("This is the name:" + selectedFeature.getName()+
" " + selectedFeature.getEffect(0));
I、クラスConfig
tileGallery
のArrayListとのArrayListのメンバ変数の両方を設定するオブジェクトCFIG
を初期化します。コードを実行すると、選択したテスト値が出力されます。しかし、NetBeansは、「クラスの参照と交換してください」のヒントを使用して
「静的フィールドへのアクセス」の警告を与え、宣言文の両方のために、それが文を変更します。
Tile selectedTile = Config.tileGallery.get(1);
Feature selectedFeature = Config.featureGallery.get(3);
私はそれを実行し、それはまだ動作します!
Question、Config。データを呼び出すConfigオブジェクトを識別していません。今はただ一つのConfigオブジェクトしか存在しませんが、2番目のConfigオブジェクトを初期化しても混乱しないように見えます。
ここでは何が起こっていますか?
編集:andihは、どのようなConfigクラスのコードを疑問に思った。私はそれを追加しなかった。なぜなら、それほど多くなかったし、問題に関係していたように簡単に想像することができたと思ったからだ。しかし、ここにあるのは、ちょうどその場合です。
public class Config {
public static ArrayList<Tile> tileGallery;
public static ArrayList<Feature> featureGallery;
public Config(){
this.tileGallery = Tile.ReadTileXML();
this.featureGallery = Feature.ReadFeatureXML();
}
}
なぜ機能しないのですか? –
静的変数は、そのクラスのすべてのインスタンス間で共有されます。 'tileGallery'を' Config'クラスの特定のインスタンスにバインドする必要がある場合、 'static'アクセス指定子を作成します。 – SubOptimal
ボーナスに関する質問は、CFIGではなくConfigを使用するようにすべてのステートメントを変更した後、「紹介」というだけの新しい「警告」が表示されます。Alt + Enterは追加情報を提供しません。 また、答えを出した人のおかげで、私はこれで何かを学びました。 – JamesA