现在的位置: 首页 > 综合 > 正文

java泛化自定义类应用

2017年12月06日 ⁄ 综合 ⁄ 共 2398字 ⁄ 字号 评论关闭

{
    
  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遍事.),不过看看是不是创建一个用类型作为参数的类,参数是KV,传入的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");
  }
}

抱歉!评论已关闭.