0

私はJavaにかなり慣れていないので、C++のバックグラウンドからJavaに取り組んでいます。保護されたコンストラクターが呼び出される前に拡張する必要があるクラスを使用しています。クラスは 1 つのインスタンスでのみ必要です。クラスを動的に作成し、同時にインスタンス化する方法はありますか?

同様の投稿を見つけましたが、的を射ていませんでした。例として次のコードがありますが、もちろん構文的に正しくありません。

final ffd.tokens.CountryTokens cToken = new class USA extends ffd.tokens.CountryTokens
{
    USA (String value)
    {
        super(value);
    }
} ("USA");
4

2 に答える 2

1

このようなもの?

final ffd.tokens.CountryTokens cToken = new ffd.tokens.CountryTokens("someValue")
{
// override something
};

訂正:

保護されたメソッドを使用しても、拡張するBuilderを作成できますffd.tokens.CountryTokens(かなりクレイジーですね?)

public abstract class CountryBuilder extends ffd.tokens.CountryTokens {
   public CountryBuilder () { super("useless-data"); }    
   public abstract ffd.tokens.CountryTokens build (String val); 
}

使用:

CountryBuilder builder = new CountryBuilder (){
   @Override
   public ffd.tokens.CountryTokens build(String val) {
      return new ffd.tokens.CountryTokens(val) {};
   }
};

builder.build("USA");
builder.build("Canada");

私はあなたがその考えを理解したと思います。

于 2013-03-20T21:07:41.137 に答える
0

わかったと思います。私は常にJavaを使用した動的割り当てを考えていますが、単にローカルインスタンスを作成する場合は、この方法で行いました。

class USA extends ffd.tokens.CountryTokens
{

    public USA() { super("USA"); }

} USA country;

countryこれで、タイプのローカル変数ができUSAました。

于 2013-03-20T21:37:49.220 に答える