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传入?为什么不是其他类似的东西?是因为is 的类型,并且 getter必须返回我们提供给的相同类型吗?LongIEntity<Long>IEntity<String>idLongidIEntity

4

2 回答 2

4

YourEntityClass随意放入<Long>IEntity任何实现的类型Serializable都可以去那里。

为 选择类型后I,您的getId()方法必须返回相同的类型。

例如,您可以有另一个实现的类,IEntity<String>getId()这种情况下必须返回一个String.

于 2009-12-30T03:04:58.207 回答
0

YourEntityClass 正在实现一个泛型接口,它正在为泛型接口指定特定类型。它有一个使用特定类型(Long)的方法,因为这是实现该接口所需要的。

于 2009-12-30T03:02:49.397 回答