• 締切済み

オブジェクトのコピーについて

お世話になります。 オブジェクトのコピーを行いたいと思っています。 通常の方法ですと、cloneなどで複製しないといけない ようなのですが、そのほかで簡単に行える方法を 探しています。 配列にはarraycopyがありますが、配列の必要がない オブジェクトも、無理やり配列にしてarraycopyを 行うといったこともよいのでしょうか。 何か良い方法がありましたら、ご伝授いただきたいと 思います。 宜しくお願いします。

みんなの回答

  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.2

フツーにnewすりゃ済む話じゃなくて? // コピー元 String str1 = new String("test"); // コピーを作る String str2 = new String(str1); 自身のオブジェクトを引数に取るコンストラクタをもたないクラスは無理だが

tatapata
質問者

補足

>自身のオブジェクトを引数に取るコンストラクタをもたないクラスは無理だが それが『めんどくさい』って言ってるんたけど… 解って頂けなかったかな…? もっとよく説明を読んでね。

全文を見る
すると、全ての回答が全文表示されます。
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

オブジェクトの内容を完全にコピーするには ObjectOutputStreamとObjectInputStreamを使うのだ。 cloneはオブジェクトごとに 独自のコピーを行うためのメソッドだし arraycopyはそもそも配列専用。

tatapata
質問者

補足

askaaskaさん、ありがとうございました。 参考になりました。 が、やはりてっとり早いという方法とは 少し違うようです。 よって、やはり希望していた回答とは少し違うかと。 質問にありますように、『楽に』できる方法を 探していたのですが、少し異なっていたようです。 また何かありましたら、宜しくお願いたたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 配列のコピーと nativeMethod について

    こんばんは。 配列のコピーと nativeMethod について教えてください。 配列のコピーをするのに、Systemクラスのarraycopyを使うとします。 その場合、arraycopy を見てみると、nativeMethodになっていました。 (1) arraycopyを使うより、配列のコピーは自分でループをまわして、コピー する方が処理的に早いとか、あるんでしょうか? (2) まだまだ、nativeMethodについて、理解が浅いのですが、要するに他言語で 書かれているものを使用していると言う考え方で良いでしょうか? (3) 配列のコピーを行う場合、arraycopy を使うのが良いでしょうか? それとも、別の方法を使用されていますでしょうか? 上記、3点について教えていただけたら嬉しいと思います。 1,3の質問が少し似ているかと思いますが,宜しくお願い致します。

    • ベストアンサー
    • Java
  • 2次元配列のコピー

    System.arraycopy(~) を使って二次元配列のコピーをしたいのですが、 出来るのでしょうか? 出来るのなら、使い方を教えてください。

    • ベストアンサー
    • Java
  • javascriptにおける配列のコピー

    javascriptにおける配列のコピーについて質問です。 調べてみると、配列のコピーは破壊・非破壊の区別が あるのまでは理解しました。 非破壊のコピーをしたいので、 Array.prototype.clone = function(){ return Array.apply(null,this) } を用意して、3次元配列をコピーしたのですが、 コピーした配列のデータを変えたりしたら、 元の配列も変わって(破壊的)ました。。 このclone関数は多次元では破壊的になってしまうのですか? ちなみに、aaa[0~10][0~10][0~10]として、 var bbb; bbb = aaa.clone();で行いました。 教えてください、お願いします!

  • blenderオブジェクトを任意の場所に複数コピー

    次のような操作をしたいと思っています。スクリプト等で行う方法をご存じありませんか? 【状況】 オブジェクト名「1」~「10」まで10個のオブジェクトをそれぞれ別の座標に配置。それらとは別にオブジェクト「A」を用意。 【操作】 オブジェクト「A」をオブジェクト「1」~「10」のある各座標に一括でコピーして配置。 (つまり、操作後にはコピー元のオブジェクト「A」が1つと、「1」~「10」の位置に移動しコピーしたオブジェクト「A」が計10個あり、編集しているblenderプロジェクト上にはオブジェクト「A」が11個存在することになる。) 一つ一つならば当然できます。オブジェクト「1」を選択してカーソルを選択物へ移動。オブジェクト「A」を選び複製してそれをカーソルの場所へ移動。これを10回繰り返せばできます。 これを一括で操作したいです。「1」~「10」までをすべて選択し、その状態で最後に「A」も追加で選択。コピー先の「1」~「10」のオブジェクトは橙色の選択状態で、コピーしたいオブジェクトが黄色で選択されている状態。ここで何かしらの操作をすればできそうな気がしますが、プログラミング等の知識がないため、スクリプトを自分で書くことができません。

  • パワーポイントでオブジェクトのコピーのやり方

    (1)パワーポイント2002でオブジェクトのコピー先を コピー元のオブジェクトの真上にコピーしたい時 どうすればいいのでしょうか? ショートカットキーもありますか? (2)複数のオブジェクトを均等配置したい時 簡単な方法はありますか?

  • イラストレータのオブジェクト移動

    お世話になります。イラストレータ8.0を使っていますが、まだ慣れておりません。 ベースオブジェクト(4角形)のど真ん中に文字を入れたいのですが、配列、整列を使うと、ベースオブジェクトまで動きままになりません。何とか、ベースオブジェクトの位置はそのままで、文字等のオブジェクトだけが、ベースオブジェクトの真中に行く方法はあるのでしょうか。

  • フォトショップでオブジェクトを複製する方法を教えて

    フォトショップを独学しています。使っているのはフォトショップcs2になります。 シェイプオブジェクトなどを起点を中心に複製する方法を教えて下さい。 altを押しながらドラックすると複製出来る事は知っていますが、観覧車の様に同じオブジェクトを複製する方法が知りたいです。 複製を繰り返す方法もありましたら、教えて下さい。 作りたいのは、真珠のオブジェクトを、半円状や、ネックレスの様に作りたいと思っています。 イラストレーターには回転ツールで複製をして、同じ動作を繰り返すショートカットで、簡単にオブジェクトを回転させながら複製出来ますが、そのような方法がフォトショップにもありますでしょうか? 説明がつたなくて、申訳ありません。 よろしくお願いいたします。

  • オブジェクトがコピーされなくなった

    Excel 2003です。 1週間毎EXCELで上長に報告をして、上長より送り返されてきます。 その際に、送り返されたのに追加で入っているオブジェクト(検印と承認)とコメントを 自分の使っているEXCELに貼り付けます。 自分→上長→管理職→上長→自分 のようにしているので、1日もしくは、2日がタイムラグが出るので、 送り返されたのから、検印・承認・コメントを自分のに貼り付けます。 この際に、何時までだったか、添付画像の左のように範囲選択して、貼り付けると真ん中のように なっていました、最近、オブジェクトが貼り付けられなくなりました(一番右側)。 何時からなったか覚えてないので、何をどのようにしてなったのかが分からない為に元のように戻す方法が分かりません。 範囲選択してコピーで、貼り付けたら、範囲選択内にあるオブジェクトも一緒に張り付くようにするにはどうすれば良いでしょうか?

  • PowerPointのオブジェクトのコピーについて

    現在PowerPoint2000を使用しています。たくさんのプレゼン資料から何枚かのスライドをもってきてあたらしいプレゼン資料を作成したいのですが、もともと作成してあるスライドの中身(タイトルやらオブジェクトやら)をすべてコピーし、あたらしいテンプレートに貼り付けると、オブジェクトに追加してあるテキストの文字すべてが大きくなってしまいます。現在ひとつひとつもともと作成してあったものと同じフォントに変えるか、「書式のコピー/貼り付け」ボタンを使って作業をしているのですが、他に方法はないでしょうか? コピーしたそのままの形で貼り付けることは出来ますか? どなたかお教えください。よろしくお願いします。

  • エクセルのVBAでオブジェクトの配列変数は使えますか?

    VBですとオブジェクトの配列変数というか、コピーしたときに自動的に配列になってしまいますが、エクセルのVBAの場合でオブジェクトの配列変数は使えますか? なにをしたいかというと、ボタンが多すぎて一つ一つにプログラム定義は面倒、そこで配列にしてまわすことにしたいのですが、エクセルで可能でしょうか。 どなたかお願いします。