ジェネリックタイプのオブジェクトを書き込み、Javaをファイルします

StackOverflow https://stackoverflow.com/questions/20353341

  •  25-08-2022
  •  | 
  •  

質問

それも可能ですか?後でファイルから読むことができる必要があります。私が意図していることの例(ただし、Eがシリアル化できないために機能しません):

private <E> void writeEvent(ObjectOutputStream out,E obj) throws IOException{
        out.writeObject(new custEvent(obj));
        }

class custEvent<E> implements Serializable{
        private E obj;
        private Date date;

        public custEvent(E obj) {
            this.obj=obj;
            date=new Date();
        }
    }
役に立ちましたか?

解決

ジェネリックパラメーター化に上限を使用してみませんか E?

のように:

private <E extends Serializable> void writeEvent(ObjectOutputStream out,E obj) {
  // etc.
}

ここでの混乱はそれでしょう Serializable インターフェイスであり、クラスで「拡張」することはできません(ただし できる トーマスの発言として他のインターフェイスによって拡張されます)が、上限はまだ有効です。

もちろん、これはあなたのことを意味します Es意志 必要 実装する Serializable, 、または拡張されるインターフェイスを実装します Serializable.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top