0

私はJavaは初めてですが、基本的なプログラミングは初めてです。このため、私はまだすべての用語とその意味を完全には習得していません。そうは言っても、私が欲しいものを説明していないかもしれないので、できるだけ具体的にしようと思います.

(Buff) や (Debuff) などのサブクラスを親にする抽象親クラス Status を作成していますが、これもおそらく抽象的です。最終的には、何らかの形で Status から継承する独自のクラス名を持つ具象クラスを作成することになるとだけ言っておきましょう。

アイデアは、これらのオブジェクトのリストを反復処理して、別の Dragon.object を変更させることです。ただし、これらの Status オブジェクトは別のクラスのオブジェクトの値を数学的に変更するため、順序が重要になります。このことと、これらのオブジェクトがインスタンス化される順序がないという事実のために、あるステータスが値を 10% 増加させ、別のステータスがその値から 5 を減算すると、意図しない結果になってしまいます。

この背景を提供する理由は、この問題に正しく取り組んでいるかどうか確信が持てず、間違った道を進んでいる場合は誰かがここで修正してくれることを願っているからです。

私の質問に進みます。フィールドの 1 つの値でオブジェクトを比較するのは簡単に思えます。これはクラス型にも当てはまりますか? もしそうなら、オブジェクトの種類を比較するコンパレータをどのように記述すればよいでしょうか。「オブジェクトタイプ」とは、つまり;

比較: Status.Buff.Percentage.Strength10Percent から Status.Buff.Additive.Strength10

優先度を指定するこのクラスにフィールドを配置し、ソート時にカスタムコンパレータを使用するか、オブジェクトタイプで十分ですか (Java がそれを実行できる場合)?

読んでくれてありがとう。

4

3 に答える 3

0

おそらく優先フィールドが必要です。

そうは言ってもthis.getClass().getName()、優先度を見つけるのに十分な場合は、現在のクラスの名前を取得するために使用できます。その後、compareTo メソッドでクラス名を使用できます。

instanceof特定のオブジェクトが特定のクラスのサブクラスのオブジェクトであるかどうかを確認するためにも使用できます。たとえば、あなたの例を参照してください:

のオブジェクトは、次のStatus.Buff.Percentage.Strength10Percent場合に true を返します。

obj instanceof Percentage

また

obj instanceof Buff

于 2013-04-24T05:55:08.543 に答える
0

設計に対するアプローチが間違っていると思います。あなたがしようとしているのは、RPG の修飾子を計算することですよね? その場合は、apply(Character c)メソッドを使用してインターフェイスをインスタンス化する必要があります。これにより、変更がカプセル化され、キャラクター (またはロボット、またはモディファイヤを適用するもの) に適用されます。はCharacter、変更する属性のゲッターとセッターを持つインターフェイスを実装する必要があります。これapply()により、調整を行うことができます。

于 2013-04-24T07:44:07.963 に答える