java泛化自定义类应用

{
    
  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");
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值