ChrisYez 2015-11-10 01:35 采纳率: 50%
浏览 1456
已采纳

请教一个JAVA的基础问题

有如下的一个接口,叫做:GenericDao,有几点不理解:
1、虽然知道E,K,V都是泛型,但是一直不太理解有什么用,比如:>这段代码有什么用,实现什么功能?如果不写会有什么影响?
2、为什么在类的定义中还可以extends,一般不都是 class A1 extends A,这么写么?为什么可以class A1

 package com.patsnap.common.bean;

import com.patsnap.common.entity.DBVersionEntity;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * Author:  shenyineng
 * Date:    9/25/15.
 */
public interface GenericDao<K extends Serializable, E extends DBVersionEntity<K>> {
    /**
     * Get target entity by id
     *
     * @param id specified id
     * @return specified entity
     */
    E get(@Valid @NotNull K id);

    /**
     * Save a entity
     *
     * @param entity specified entity
     */
    void save(@Valid @NotNull E entity);

    /**
     * Delete a specified entity
     *
     * @param entity specified entity
     */
    void delete(E entity);

    /**
     * Delete a target entity by its id
     *
     * @param id specified id
     */
    void delete(@Valid @NotNull K id);
}

希望谁能帮忙解答一下,多谢。

  • 写回答

3条回答 默认 最新

  • wanghang1208 2015-11-10 02:19
    关注

    GenericDao是一个接口,并且是一个泛型接口,因为其定义时,在GenericDao后面有<>。<>中的K、E表示某种类型,但是只有到使用的时候才知道是什么类型。
    如果<>中仅仅是,那么K、E可以是任何类型,但是实际上有时我们只希望K、E是一些有限制的类,比如某个类的子类等。
    问题中但GenericDao泛型接口定义就是对K、E有限制,要求K是Serializable类的任何子类,E是DBVersionEntity类的任何子类。
    如果不这么写,别人在使用GenericDao接口的时候,可以将任何类型用到这个接口的实现中,造成代码出错。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效