黑马程序员技术交流社区
标题:
java泛型中的类级别的自定义<T>疑问?
[打印本页]
作者:
lonely_zb
时间:
2013-9-6 02:21
标题:
java泛型中的类级别的自定义<T>疑问?
本帖最后由 杨增坤 于 2013-9-11 17:41 编辑
package com.itcast.day2;
import java.util.Set;
/**
* 自定义泛型类的级别
* @author bo
*
* @param <T>
*/
public class GenericDao<T> {
public void add(T t){
}
public T findById(int id){
return null;
}
public void delete(T obj){
}
public Set<T> findByConditions(String where){
return null;
}
}
为什么GenericDao<T> 不能有static静态方法啊..我一写编辑器就报错.....?
作者:
yangjie
时间:
2013-9-6 02:34
自定义泛型类可以有静态方法,但静态方法中不能用到类上定义的泛型T
因为T要到建立对象的时候才会被指定具体类型,而静态方法是先于对象存在的
作者:
胡志翔
时间:
2013-9-6 12:58
静态方法优先于对象而存在,这里泛型T只有当建立对象时才会被指定,所以这里不能用static静态
作者:
......
时间:
2013-9-6 16:20
java虚拟机加载类的时候就会把类中的静态方法和静态变量加载进内存,而自定义泛型类的泛型直到创建对象时才会被指定类型。泛型类中可以有静态方法,但该方法不能使用泛型
作者:
李锡碧
时间:
2013-9-6 18:51
泛型对其所有可能的类型参数,都具有同样的行为,从而可以把相同的类当成许多不同的类来处理。于此一致的是,类的静态变量和方法也在所有的实例间共享,所以在静态方法、静态初始化或者静态变量的声明和初始化中不允许使用类型形参。
作者:
dunwu
时间:
2013-9-6 19:23
本帖最后由 张站华 于 2013-9-6 20:08 编辑
1、泛型类的作用范围是整个类中中,泛型要在创建对象时才能确定,而静态方法是随着类的加载而加载,如果要加与泛型类相同的泛型,此时对象还未实例化,不确定泛型类型。
2.如果一定要在泛型类中的静态方法中加泛型,则就直接写泛型方法。
作者:
王广亚
时间:
2013-9-6 19:40
可以的是没问题的
import java.util.Set;
/**
* 自定义泛型类的级别
* @author bo
*
* @param <T>
*/
public class GenericDao<T> {
public static void main(String args[])
{
System.out.println(add("54"));
}
public static <Q> Q add(Q q)
{
return q;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2