1
    @Entity
    @Table(name = "your_entity")
    public class YourEntityClass implements IEntity<Long> {

        @Id
        @SequenceGenerator(name = "gen_test_entity2_id", sequenceName = "test_entity2_id_seq", allocationSize = 10)
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gen_test_entity2_id")
        private Long id;

        @Column(name = "name", nullable = false, length = 64)
        private String name;

        /*
         * Create constructors, getters, setters, isEquals, hashcode, etc.
         */
    }

public interface IEntity<I extends Serializable> extends Serializable {

    /**
     * Property which represents id.
     */
    String P_ID = "id";

    /**
     * Get primary key.
     *
     * @return primary key
     */
    I getId();

    /**
     * Set primary key.
     *
     * @param id primary key
     */
    void setId(I id);
}

上記のコードについて、私の質問は、なぜYourEntityClass渡す必要がLongあるのですIEntity<Long>か? 他のようなものではないのはなぜIEntity<String>ですか?がidの型Longであり、 のゲッターがidに提供したのと同じ型を返さなければならないからIEntityですか?

4

2 に答える 2

4

YourEntityClass任意<Long>に入れます。IEntity実装するすべてのタイプがSerializableそこに行くことができます。

のタイプを選択した後IgetId()メソッドは同じタイプを返す必要があります。

たとえば、を実装する別のクラスを作成することができIEntity<String>getId()その場合はを返す必要がありStringます。

于 2009-12-30T03:04:58.207 に答える
0

YourEntityClass はジェネリック インターフェイスを実装しており、ジェネリック インターフェイスの特定の型を指定しています。特定の型 (Long) を使用するメソッドがあります。これは、そのインターフェイスの実装に必要なものだからです。

于 2009-12-30T03:02:49.397 に答える