文章出處

最近有空就著迷于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


文章標籤
全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

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