• ベストアンサー

Javaの配列について

お世話になります。 Javaでは配列は基本型ではなくオブジェクト型(参照型)だということなのですが(実際equals()やtoString()などを持っている)、配列に他のクラスやインターフェイスを継承させる方法はあるのでしょうか?例えば配列にSerializableをimplementsさせて、他のクラスのインスタンスのように直接ファイルに読み書きできるようにすることは、可能なのでしょうか? よろしくご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

配列はすでにSerializableをインプリメントしています。 当然、Cloneableもインプリメントしてます。 http://www.y-adagio.com/public/standards/tr_javalang2/arrays.doc.html

参考URL:
http://www.y-adagio.com/public/standards/tr_javalang2/arrays.doc.html
lovin1203
質問者

お礼

あっそうでしたか!ビックリしちゃいました。大変参考になりました。誠にありがとうございました。

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

関連するQ&A

  • implements java.io.Serializableとは?

    お世話になります。 java.io.Serializableをインプリメントしているクラスを よく見ますが、これはどのようなインターフェイスなのでしょうか? Serializableクラスの中身は public interface Serializable { } となっているだけで何もしていないような。。。 使用方法、どのようなときにImplementするのか、等 教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • オブジェクトを配列として扱いたい

    Java(オブジェクト指向)を始めて数日の者です。 LinkedListを利用し、インスタンス化したオブジェクトをListに入れて 扱えるようにしたいと考えています。 具体的には LinkedList<クラス名> array = new LinkedList<クラス名>(); クラス名 object1 = new クラス名(); -object1の処理- array.add(object1); -object1の処理- array.add(object1); -object1の処理- array.add(object1); このようにして、object1を配列で管理するイメージです。 object1の処理結果は、毎度変わっています。 しかしこれですと、最後のobject1の処理の内容がすべてのarray(i)に入ってしまいます。 要は、array(i)は全て、同じobject1を参照しているだけ。 object1の変更結果がarray(i)に入っていくというイメージでは無い、ということでしょうか? また、この他でインスタンス化したものを配列で管理できるような方法がございましたら、ご教授いただけると幸いです。m(_ _)m 動的に配列の要素数を変更(要素が追加)ができるようにしたいのです。

    • ベストアンサー
    • Java
  • Javaでは多重継承ができない、の意味が分からない

    「Javaでは多重継承ができない」「インターフェイスでは多重継承できる」の意味が分かりません。 「インターフェイス」の多重継承とは、あくまでも擬似多重継承であって、本当の多重継承とは機能が異なる、ということなのでしょうか? それとも、多重継承はあくまでもクラスに対して行う言葉であり、それをインターフェイスで実現しているから、擬似なのでしょうか? つまり、機能としては完全に多重継承と同一? あるいは、それ以外? インターフェイスで可能なら、Javaで多重継承ができないという表現はおかしいように思うのですが…。 例えば、Javaのクラスでは多重継承できない、という言い方だと、また違った意味になるのでしょうか?

    • ベストアンサー
    • Java
  • 継承・実装の関係で悩んでいます。

    継承・実装の関係について悩んでいます。 ここでは、アクセス制御を考えずに、インスタンスかstaticかabstract(ここではabstract final staticやabstract classのこと)の違いで、どう継承するのか考えています。 // 継承 はメソッドのオーバーライドのことを考えます。(オーバーロードは考えない) クラスAからクラスBでオーバーライドしたメソッドは、 クラスCでさらにオーバーライドできるのでしょうか? クラスCが クラスBのクラスAからオーバーライドしたメソッド をクラスBのメソッドとして見たときに、オーバーライドすることは可能なのでしょうか? クラスA │ インスタンスフィールドA │ staticフィールドA │ │ クラスA() { } │ │ インスタンスメソッドA () { } │ staticメソッドB() { } ↓ クラスB extends クラスA │ インスタンスフィールドA // 継承 │ インスタンスフィールドB │ staticフィールドB │ │ サブクラス1() { } // コンストラクタは継承しない、super()で呼び出す │ │ インスタンスメソッドA () { } // 継承 │ │ インスタンスメソッドB () { } │ staticメソッドB () { } ↓ クラスC extends クラスB implements インタフェースD, ... ↑ インスタンスフィールドA // クラスBのフィールドを継承 │ インスタンスフィールドB // クラスBのフィールドを継承 │ インスタンスフィールドC │ staticフィールドC │ │ サブクラス2() { } │ │ インスタンスメソッドA () { } // クラスBのメソッドを継承 │ インスタンスメソッドB () { } // クラスBのメソッドを継承 │ インスタンスメソッドD () { } // インタフェースDのメソッドを実装 │ インスタンスメソッドE () { } // インタフェースDのメソッドを実装 │ │ │ インスタンスメソッドC () { } │ staticメソッドC() { } │ interface インタフェースD extends インタフェースE ↑ │ staticフィールドD // public static final │ │ インスタンスメソッドD() { } // public abstract │ インスタンスメソッドE() { } // 継承 │ interface インタフェースE staticフィールドE // public static final インスタンスメソッドE() { } // public abstract

    • ベストアンサー
    • Java
  • パッケージ管理に変更されたデータObjectのリカバリー方法

    今までパッケージ管理されていなかったデータオブジェクトをパッケージ管理するよう変更したのですが、クラス名が変更されたことにより旧データオブジェクトの復旧が行えなくなりました。 前データ) class Data implements Serializable { public Data(){} } (1)オブジェクトストリームとしてExport。 Data target = new Data(); java.io.FileOutputStream ostream = new java.io.FileOutputStream("C:\\test.data"); java.io.ObjectOutputStream p = new java.io.ObjectOutputStream(ostream); p.writeObject(target); p.flush(); ostream.close(); (2)Dataオブジェクトをパッケージ管理に変更 新データ) package com.corp.etc class Data implements Serializable { public Data(){} } (3)(1)でExportしたデータをImport java.io.FileInputStream istream = new java.io.FileInputStream("C:\\test.data"); java.io.ObjectInputStream p = new java.io.ObjectInputStream(istream); Object obj = p.readObject(); istream.close(); Data data = (Data)obj; (3)の実行結果) java.lang.ClassNotFoundException: Data クラス名が変わったので、当たり前の動きとは思うのですが、旧データを今までと同じようにインスタンス化するために何か良い方法はありませんでしょうか?

  • JAVAのクラスの考え方は・・?

    JAVAの勉強をしていている学生です。 常々思っていたのですが、クラスの考え方がしっくりきてませんヽ(~-~ よく参考書などで書かれていることで 「クラスは設計図のようなもの、オブジェクトはそこから作成した実体」 「鋳型がクラスでどんどん作れるのがインスタンス」 といった話が疑問でならないのです。 というのも・・クラスの設計って、自分自身をフィールドに宣言したりできますよね。。 でそこから生成して、また自分自身のフィールドに生成して・・とか。 インターフェースを実装したクラスで、、、内部クラスを持ったクラスで、、、ジェネリッククラス、、。 となってくると、最初の考え方では、論理的に無理?私の脳内では変換しきれないです(´;ω;) 多分前提となる考え方が間違っていたり、私の想像力が乏しいだけだと思います。 どなたか、「クラスってこう考えればオブジェクト指向が見えてくる」と表現している本やサイトなどご存じないでしょうか。 一朝一夕で理解しようとは思っていませんので、きちんと参考にして理解しようと頑張ります! 「私的には・・」や「あなたが勘違いしている箇所は・・」といったご意見もぜひお聞きしたいです! クラスかオブジェクト指向かどっちかというより、クラスありきでJAVAのオブジェクト指向が本当に理解できると考えています。参考書やWEBを探してみた限りではやっぱり理解できないです(´;ω;) ちなみにC言語を中学生で始め、プログラミングに触れました。

  • Javaのリフレクションについて

    A,B,二つのクラスがあり、BはAを継承しています。 そんな状態で、Aのprivate変数をリフレクションで自由に値設定し、Bクラスのインスタンスから参照することって可能でしょうか??

    • ベストアンサー
    • Java
  • Javaのインターフェイスの意味

    以前あった質問の回答やネット上での説明を見たのですが、よくわからなかったので質問します。 public interface CharSequence { int length(); } class MyClassWithCharSequenceIF implements CharSequence { public int length() { return 0; } } インターフェイスには、よく多重継承を可能にするメリットがあるという説明がありますが、 public interface CharSequence { int length(); } こんな短い処理を継承する意味があるのでしょうか?クラス内で実装するためにまた public int length() { return 0; } を書かなければならないのは時間・手間のメリットは何もないように思えます。というよりむしろ単なる二度手間ではないでしょうか? クラスの継承は長い記述などを一まとめにして呼び出せるメリットがありますが、インターフェイスの継承にはそれがありません。 いったい何の意味があるんでしょうか?

    • ベストアンサー
    • Java
  • Javaにおけるメモリーの使い方についての質問です。

    Javaにおけるメモリーの使い方についての質問です。 以下のサイトには、Javaの継承は、スーパークラスのメモリ領域に、 サブクラスで使うメモリ領域を追加することなんだということが記載されています。 この説明(継承ではスーパークラスのメモリ領域にサブクラスでのメモリ領域を追加する)は、 インスタンスを作成したときの話でしょうか? もしインスタンスを作成したときの話であれば、例えば、GeographicInfo型のインスタンスを 1つ作り、その後にGeographicInfo3D型のインスタンスを1つ作ると、普通に考えれば それぞれで別のメモリ領域が確保されますが思いますが、この説明が正しいとすると、latitude、longitudeの領域は、それぞれで共通であるというように見受けられます。 そんなバカなことはありえないと思いますから、インスタンスを生成したときの話ではないと 思いますが、では、なんの時の話でしょうか。 http://www.atmarkit.co.jp/fjava/rensai2/javaent04/javaent04.html#ap02

    • ベストアンサー
    • Java
  • ADODB.Connectionはインターフェイス

    いつもお世話になっております。 C#で特定のDBに接続するクラスを作ろうとADODB.Connection(ADO.Conn)を継承しようとしたところADO.Connはインターフェイスであるため、各メンバの実装をしなくてはなりません。ADO.Connはオブジェクトととしてインスタンスを生成できていたため、なぜインターフェイスがインスタンスを生成してオブジェクトとして使えるのかがわかりません(Excel.Applicationなども同様です)。 これはどのような仕組みになっているのでしょうか?