オブジェクトの作成
「オブジェクトを自動的に作成する」とはどういう意味かわかりませんが、これがコンストラクターの目的です。コンストラクターを定義すると、あらゆる種類の実装と初期化の詳細をそこに追加して、作成したい方法で変数を正確に作成できます。「クラスにコンストラクターを提供する」を参照してください。だから、あなたがポイントを持っていると言う...
public Point(int x, int y) {
this.xPos = x;
this.yPos = y;
this.color = Color.BLUE;
this.size = Constants.DEFAULT_POINT_SIZE;
// ... etc.
}
オブジェクトからデータを収集する
これらのクラスでの情報の取得と設定は、ゲッターとセッター (アクセサーとミューテーターとも呼ばれます) によって実現されます。
public int getX() {
return x;
}
public void setX(int x) {
this.xPos = x;
}
存在するすべてのオブジェクトからデータを収集するには、存在するオブジェクトの数に関係なく、それらすべてList
を何らかの種類の に追加するだけです。private static ArrayList<T>
それらをコンストラクターの に追加しArrayList<T>
、プログラムの別の部分がいくつあるかを「知る」必要なく、情報のために静的にアクセスすることもできます。
段階的な GUI の変更
フレームごとの変更を実装するにはいくつかの方法がありますが、私はTimer
とを使用することを好みActionListener
ます。これにより、フレームレートを設定し、public void actionPerformed(ActionEvent)
メソッドで必要なアクションを実行できます。これは初心者にとってやや複雑なので、かなりの量の読み取りとテストを行う必要があります。開始するには、「アクション リスナーの作成方法」および「Swing タイマーの使用方法」を参照してください。
オブジェクトの破棄
Java には、C++ などの言語にあるようなデストラクタはありません。代わりに、定期的に (そして散発的に) 実行されるガベージ コレクターがあり、それらを指す参照がなくなったと見なされるすべてのオブジェクトを破棄します。したがって、オブジェクトが範囲外になったときにガベージ コレクターがオブジェクトを取得するようにするには、オブジェクトへのすべての参照をnullに割り当てるだけです。これによりオブジェクトがすぐに破棄されることはありませんが、次の実行時にガベージ コレクターによって確実に "タグ付け" されます。
前述のようにSystem.gc()
、ガベージ コレクターを「呼び出す」メソッドです。ただし、これを呼び出すとガベージ コレクターが強制的に実行されるとは限りません。API では、この呼び出しは、ガベージ コレクターを実行する必要があることをシステムに「示唆する」と述べています。最終的には、信頼性が低く、ガベージ コレクションは通常、制御の範囲外です。
APIから:
gc メソッドを呼び出すということは、Java 仮想マシンが未使用のオブジェクトをリサイクルして、現在占有しているメモリをすばやく再利用できるようにすることを示唆しています。メソッド呼び出しから制御が戻ると、Java 仮想マシンは、破棄されたすべてのオブジェクトからスペースを再利用するために最善を尽くしています。
また、副次的なピックとして、オブジェクトを作成するときは必ずクラス名を大文字にしてください。:)
Object object = new Object();
OPの特定の目的のために:「存在するものすべてを描画する」ゲーム環境が心配な場合(したがって、ゲームが正しく実行されるようにするためにオブジェクトをすぐList
に破棄したい場合)、 orSet
を使用してそれを設定することを検討してください描きたいものが画面から消えたら削除します。
参考文献: