程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 泛型-請教一個JAVA的基礎問題

泛型-請教一個JAVA的基礎問題

編輯:編程綜合問答
請教一個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);
}

希望誰能幫忙解答一下,多謝。

最佳回答:


GenericDao是一個接口,並且是一個泛型接口,因為其定義時,在GenericDao後面有<>。<>中的K、E表示某種類型,但是只有到使用的時候才知道是什麼類型。
如果<>中僅僅是,那麼K、E可以是任何類型,但是實際上有時我們只希望K、E是一些有限制的類,比如某個類的子類等。
問題中但GenericDao泛型接口定義就是對K、E有限制,要求K是Serializable類的任何子類,E是DBVersionEntity類的任何子類。
如果不這麼寫,別人在使用GenericDao接口的時候,可以將任何類型用到這個接口的實現中,造成代碼出錯。

wanghang1208
ye8303019
ye8303019
wanghang1208
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved