私はBaseクラスとそれから派生する2つのクラスOneとTwoを持っているとします。オブジェクト型は、実行時に決定されC++での派生型のインスタンス化
Base b;
if(condition)
b = new One();
else
b = new Two();
(上記のオブジェクトはヒープ上に行く):Javaでは、私は次のシナリオを持つことができます。
実行時にオブジェクト型をインスタンス化できるようにしたい - 私が知っているのは、両方が同じBase型を共有していることです - しかし、スタックを割り当てたままにしておきます。
Base b;
これを行うにはどうすればよいですか?
でメモリを削除する必要があります - どれも(Javaは、スタック上のオブジェクトを割り当てませんので、これらの2例がありませんありません同じ)。もしあなたができたとしても、あなたのオブジェクトは 'Base'型にのみスライスされます(http://stackoverflow.com/questions/274626/what-is-object-slicing)。 –
あなたは(アドバイスされた方法で)維持することはできません。割り当てられたスタックなので、割り当て時にそのサイズを知る必要があります。 Javaでは、オブジェクトがスタックに割り当てられていないことを覚えています.C++で書かれたJavaコードはスタックの割り当てを意味しますが、それはJavaでは意味しません。 – djgandy
これは古典的なXYの問題です - http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – Slava