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条)

报告相同问题?

悬赏问题

  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题