-1

クラスPlayerを取得する必要があるLocationクラスがあります。各ロケーション クラスには extendsがあり、静的インスタンスを返すLocationメソッドがあります。get()

文字に位置拡張クラスの名前を参照する文字列がある場合、どうすればインスタンスを取得できますか?

キャラクター:

public class Player {
    public static Location getLocation() {
        try {
            //return location
        } catch (Exception ex) {
            Logger.getLogger(Player.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
}

位置:

public class Location{
    protected static Location singleton;
    public static Location get() {
        return null;
    }

ロケーション クラス:

public class Finleydale extends Location{
    public static Location get() {
        if (Finleydale.singleton == null) {
            Finleydale.singleton = new Finleydale();
        }
        return singleton;
    }
}

複数の住所表示オプションがあり、場所クラスにシングルトンがあるため、すべての住所表示オプションがあります。場所のバージョンが 1 つしかないため、シングルトンは静的です。誰かがこれで私を助けることができますか?

4

3 に答える 3

0

オブジェクトモデルに関する何かが間違っているようです。メソッドを含むインターフェースLocatableを用意してgetLocation()おけば、インターフェースの実装者はそれぞれの場所を返すことができます。シングルトンLocationは概念的に間違っているようです。

interface Locatable { 
   Location getLocation();
}

class FinleyLand implements Locatable { 
    @Override
    Location getLocation() { 
       //whatever it takes to get you there...
    }     
}
于 2013-03-23T03:33:44.663 に答える
0

get()関数の静的修飾子を削除し、図のようにPlayerクラスを変更しました。
他の皆さん、あなたの意見は素晴らしかったです。

    String locationS; //Class name
    public static Location getLocation() {
        return ((Location) Class.forName(locationS).newInstance()).get();
    }
于 2013-03-23T16:14:56.680 に答える