{
public Hashtable<K,V> hash=new Hashtable<K,V>();
public void put(K k,V v)
{
hash.put(k, v);
}
public V get(K k)
{
return hash.get(k);
}
public static void main(String[] args) {
TestGen0<String,String> t=new TestGen0<String,String>();
t.put("hello", "test");
System.out.println(t.get("hello"));
TestGen0<Integer,Integer> tt=new TestGen0<Integer,Integer>();
tt.put(100, 123);
System.out.println(tt.get(100));
}
}
正确输出:
test
123
这只是个例子(
Java
中集合框架都泛型化了,这里费了
2
遍事
.
),不过看看是不是创建一个用类型作为参数的类,参数是
K
,
V
,传入的
“
值
”
是
String
类型。这个类他没有特定的待处理型别,以前我们定义好了一个类,在输入输入参数有所固定,是什么型别的有要求,但是现在编写程序,完全可以不制定参数的类型,具体用的时候来确定,
增加了程序的通用性,像是一个模板,不需要进行类型转换了。
(2)实例二:
利用泛形实现数据库操作的模板接口和实现类,具体的DAO只须在继承它时,定义了T,P的类型,则增删改查的参数和返回值,则会是用户定义的类型。
具体如下:
具体如下:
A接口:--数据库操作模板接口
import java.io.Serializable;
import java.util.List;
//T:表示返回的实体,P表示输入的参数
public interface A<T extends Serializable,P extends Serializable>
{
public List<T> findAll(P param,String statementName);
public void insert(P param,String statementName);
public void update(P param,String statementName);
public void delete(P param,String statementName);
}
也可简单定义为 public interface A<T,P>,只是上面的定义加了范围的限制。
B类:
--数据库操作模板实现类,在此类中实现了对DB所增删改查。具体的继承类只须继承它,参数,返回值即会根据用
户继承时的定义而自动适配。
import java.io.Serializable;
import java.util.List;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
public class B<T extends Serializable,P extends Serializable>
extends SqlMapClientDaoSupport implements A<T,P>{
public List<T> findAll(P param,String statementName)
{
return (List<T>) this.getSqlMapClientTemplate().queryForList(statementName,param);
}
public void insert(P param,String statementName)
{
this.getSqlMapClientTemplate().insert(statementName, param);
}
public void update(P param,String statementName)
{
}
public void delete(P param,String statementName){}
}
实现类一:
import java.util.HashMap;
import com.coship.dhm.dm.admin.entity.Device;
public class CDao extends B<Device,HashMap>{
}
实现类二:
public class CDao2 extends B<Admin,String>{
}
应用一:
public class DAction {
private CDao cdao;
private HashMap map;
public void D()
{
List<Device> tt= this.cdao.findAll(dev, "dev.findAll");
}
}
应用二:
public class DAction {
private CDao2 cdao2;
private String str;
public void D()
{
List<Admin> tt= this.cdao2.findAll(str, "dev.findAll");
}
}
import java.io.Serializable;
import java.util.List;
//T:表示返回的实体,P表示输入的参数
public interface A<T extends Serializable,P extends Serializable>
{
public List<T> findAll(P param,String statementName);
public void insert(P param,String statementName);
public void update(P param,String statementName);
public void delete(P param,String statementName);
}
也可简单定义为 public interface A<T,P>,只是上面的定义加了范围的限制。
B类:
--数据库操作模板实现类,在此类中实现了对DB所增删改查。具体的继承类只须继承它,参数,返回值即会根据用
户继承时的定义而自动适配。
import java.io.Serializable;
import java.util.List;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
public class B<T extends Serializable,P extends Serializable>
extends SqlMapClientDaoSupport implements A<T,P>{
public List<T> findAll(P param,String statementName)
{
return (List<T>) this.getSqlMapClientTemplate().queryForList(statementName,param);
}
public void insert(P param,String statementName)
{
this.getSqlMapClientTemplate().insert(statementName, param);
}
public void update(P param,String statementName)
{
}
public void delete(P param,String statementName){}
}
实现类一:
import java.util.HashMap;
import com.coship.dhm.dm.admin.entity.Device;
public class CDao extends B<Device,HashMap>{
}
实现类二:
public class CDao2 extends B<Admin,String>{
}
应用一:
public class DAction {
private CDao cdao;
private HashMap map;
public void D()
{
List<Device> tt= this.cdao.findAll(dev, "dev.findAll");
}
}
应用二:
public class DAction {
private CDao2 cdao2;
private String str;
public void D()
{
List<Admin> tt= this.cdao2.findAll(str, "dev.findAll");
}
}