これが機能する理由がわかりません。教えてください。
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));
クラスArrayList とArrayListCFIG
の両方のメンバー変数を設定する object を初期化します。コードを実行すると、選択したテスト値が出力されます。ただし、宣言ステートメントの両方について、Netbeans は「静的フィールドにアクセスしています」という警告を出します。Config
tileGallery
featureGallery
「クラス参照で置換」のヒントを使用して、ステートメントを次のように変更します。
Tile selectedTile = Config.tileGallery.get(1);
Feature selectedFeature = Config.featureGallery.get(3);
実行すると、まだ機能します!
質問、構成。どの Config オブジェクトからデータを呼び出すかを特定していません。現在、存在する Config オブジェクトは 1 つだけですが、2 つ目の Config オブジェクトを初期化しても、混乱しているようには見えません。
何が起きてる?
編集: andih は、構成クラスのコードが何であるか疑問に思いました。あまり多くないので、追加しませんでした。問題に関連しているため、それが何をしたかは簡単に推測できると考えました。ただし、念のため、ここにあります。
public class Config {
public static ArrayList<Tile> tileGallery;
public static ArrayList<Feature> featureGallery;
public Config (){
this.tileGallery = Tile.ReadTileXML();
this.featureGallery = Feature.ReadFeatureXML();
}
}