首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java的泛型如何做

2013-06-19 
java的泛型怎么做我有一个.NET写的东西要转为java的,在泛型这边遇到不少麻烦。麻烦懂java的人告诉下像C#语

java的泛型怎么做
我有一个.NET写的东西要转为java的,在泛型这边遇到不少麻烦。麻烦懂java的人告诉下
像C#语法中,接口可以定义返回泛型类型,在java中要怎么实现,关键他也不是泛型的接口。


 public interface IActionUtils
    {
        bool Execute(string sqlStr);

        int[] Execute(string[] sqlArr);

        DataTable Query(string sqlStr);

        DataTable Query(string table, string fields, string condition, Pager pager);

        DataTable QueryPage(string table, string fields, string condition, Pager pager, ref int totalRecords);

        T QueryEntity<T>(string sqlStr) where T : class, new();
        IList<T> QueryEntities<T>(string sqlStr) where T : class, new();

        IList<T> QueryEntities<T>(string table, string fields, string condition, Pager pager) where T : class, new();

        bool Add(object obj);

        bool Update(object obj);

        IList<T> QueryEntities<T>(string table, string fields, string condition, Pager pager, ref int totalRecords) where T : class, new();
    }

[解决办法]
public  <T extends Object> T get(){
return (T)new StringBuffer("test");


public <T> List<T> getList(){
return new ArrayList<T>();
}

[解决办法]
引用:
@Override
    public <T> T QueryBean(String sql) {
        // 在这里有无办法构造出一个T的实例
                //像.NET的  T t= new T();,若是要返回一个空的T实例,要如何new Instance出来?
//或者能不能获取到class的名称,例如 t.getClass().getName().toString();只要知道类名,也可以reflect回来
        return null;        
    }


为了兼容低版本jdk,java的泛型在编译后会被擦除,我们无法使用T.class的方式动态的获取一个泛型对象Class。
建议转换为
Object QueryBean(String classPath){
Object obj = null;
try {
Class clazz = Class.forName(classPath);
obj = clazz.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();


} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return obj;
}


得到的Object对象,在调用处判断:obj instance of XXX,然后强转。

热点排行
Bad Request.