文章出處

最近有空就著迷于java的世界,希望可以把自己的lind重構一個java版本出來,雖然遇到一些小問題,但也都解決了,還是那句話,知識需要積累,程序員需要一個追求!

  1. 抽象類
  2. 接口
  3. 泛型類
  4. 泛型接口
  5. 非泛型類繼承泛型類后,輸出泛型的名稱

一 類,與C#類似,只是去除了屬性的概念,由方法去操作指定的字段

package lind.Test;

public class User extends Entity {

    public User(int id, String name) {

        super(1);
        this.name = name;

    }

    private String name;

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name
     *            the name to set
     */
    public void setName(String name) {
        this.name = name;
    }

}

二 抽象類 一組類型的抽象,公開一些方法和字段供子類使用

package lind.Test;

/**
 * 實體
 * 
 * @author Administrator
 *
 */
public abstract class Entity {

    public Entity(int id) {
        this.setId(id);
    }

    /**
     * @return the id
     */
    public int getId() {
        return Id;
    }

    /**
     * @param id
     *            the id to set
     */
    public void setId(int id) {
        Id = id;
    }

    private int Id;

}

三 接口 規定了一組操作的行為,如倉儲CURD操作,它可能會公開添加,刪除,修改,查詢等方法

package lind.Repository;

import java.util.ArrayList;
import java.util.function.Predicate;

public interface IRepository<T> {
    /**
     * 添加
     * 
     * @param entity
     */
    void Insert(T entity);

    /**
     * 更新
     * 
     * @param entity
     */
    void Update(T entity);

    /**
     * 刪除
     * 
     * @param entity
     */
    void Delete(T entity);

    /**
     * 返回列表
     * 
     * @return
     */
    ArrayList<Object> GetModel(Predicate<T> predicate);

    ArrayList<Object> GetModel();
}

四 泛型類和泛型接口, 這個概念不如Csharp靈活,在使用過程中需要注意,當然含義還是一樣的,主要是對一類功能的抽象和代替,在實現時,直接傳對應的類型即可,一般我們的倉儲對象,如用戶倉儲,可以要繼承一個泛型的倉儲類,如下

package lind.Test;

//用戶倉儲
public class UserDao extends JdbcDaoSupport<User> {
    
}

五 非泛型類繼承泛型類后,輸出泛型的名稱

這是一個小技巧,主要是泛型類中去拿里面的類型,需要注意的是,必須有一個非泛型類去繼承它,并實例化它,這個類型才可以被解析,這一點,確實無法和Csharp相比

 

感謝各位耐心的閱讀,下次我們將介紹Hash表!

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜

    大師兄 發表在 痞客邦 留言(0) 人氣()