最近有空就着迷于java的世界,希望可以把自己的lind重构一个java版本出来,虽然遇到一些小问题,但也都解决了,还是那句话,知识需要积累,程序员需要一个追求!
- 类
- 抽象类
- 接口
- 泛型类
- 泛型接口
- 非泛型类继承泛型类后,输出泛型的名称
一 类,与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表!