㈠ java怎样声明泛型方法
把泛型加在修饰符的前面,具体代码如下:
public<T>voidshow(Tt){
//dosomeing
}
备注:一般泛型方法的参数也是泛型的,否则这个泛型方法没有意义,
㈡ Java中的泛型的问题
public BaseDao(){
Class clazz=this.getClass(); //通过当前对象(this)获取当前类
clazz.getGenericSuperclass(); //返回当前类的父类的Type
//转换成有泛型的ParameterizedType类
ParameterizedType parameterizedType=(ParameterizedType)clazz.getGenericSuperclass();
//上面三句其实就是为了获取BaseDao类本身
Type[] types = parameterizedType.getActualTypeArguments();
this.type=(Class<T>)types[0];
//上面两句是获取运行期的泛型类型,返回给当前对象(this)的type属性
}
㈢ java怎么得到泛型的类型
泛型,就是广泛的类型。刚开始要用到哪个都不会知道。只有去实例化对象的时候才能确定。泛型的参数只能是对象类型。
你这个程序,T entity-entity就是是一个泛型的引用,你可以在构造方法中为其具体赋值.
例如:
private T entity;
public HibernateDao(T entity)
{this.entity=entity;}
HibernateDao<Strng> h=new HibernateDao<String>("哈哈");
这时,泛型就代表一个String对象.值是哈哈.
在没有泛型之前,这种形式一般都是先定义一个通用的Object obj.然后在构造方法中为其赋值.
㈣ java中Dao中用泛型
贴上你IA类的代码,泛型在java里面是一种语法糖,作用简单可以理解为让开发在编译阶段能发现相关的错误 而不是让错误在运行阶段才被发现 如List<String> 则list里面只能放入String类型,否则编译都通不过,你可以搜搜语法糖的作用,实际泛型在形成的class文件中还是会被擦除
㈤ java 方法中如何在返回类型使用泛型
主要是一个编译期的检查,也避免了我们代码中的强制转换,比较经典的用法有泛型DAO,泛型Page的DTO。
现在我要说的是一个挺有趣但是貌似还不是太多的人在代码中使用的方法,前段时间用guava和op4j的时候发现这样的用法,看看了源码,也是很简单的。
比如guava中创建集合的方法 List<xx> list = Lists.newArrayList(),这个代替了我们传统的 new ArrayList<xx>,为什么在=的右边不需要泛型了呢,我们看看源码。
[java] view plain
public static <E> ArrayList<E> newArrayList() {
return new ArrayList<E>();
}
返回类型中带有泛型E,并且这个泛型的来源在 static和 ArrayList之间的位置,我自己的理解是这个就和=左边的一致,可能说的不够专业但是意思应该就这样。
于是我就依样画葫芦在自己的代码中也用了起来。
我要做的是一个仿httpsession机制的自定义协议是session。在httpsession.getAttribute方法返回的是一个
Object,然后我们再类型转换。现在我用返回类型泛型来优化这个代码,以下是我自定义协议session的getAttribute的代码。
[java] view plain
@SuppressWarnings("unchecked")
public <E> E getAttribute(String key) {
return (E) map.get(key);
}
调用代码
[java] view plain
Boolean isFirst = session.getAttribute("first");
在httpsession中我们则要这么写
[java] view plain
Boolean isFirst = (Boolean)session.getAttribute("first");
泛型的用法还有很多,有新的心得再补充更新
㈥ java获取泛型
这段代码放在BaseDaoImpl中,在for循环中打印的t就是T和PK。
最后得到的persistType就是T的实际类型。
解释一下红色的部分:
因为this代表你的实例,
如果这个实例是(用Integer做ID的Student数据对象为例)
BaseDaoImpl<Student, Integer>studentDao=new BaseDaoImpl<Student, Integer>();
这个实例的“范型父类”(getGenericSuperclass)就是BaseDao<Student, Integer>,
如果你的实例是BaseDaoImpl<T, PK>子类的实例,
那么“范型父类”就是BaseDaoImpl<T, PK>,
反正不是HibernateDaoSupport,因为HibernateDaoSupport不带范型。
最后,不管是BaseDaoImpl,还是BaseDao,getActualTypeArguments()都得到Class数组,内容是{T的类型,PK的类型},取第一个(下标0),就得到T的类型(例中为Student.class)。
㈦ java 泛型的几种用法
1. public class DAO<T> {
/**
* 泛型类
* 声明类的同时声明泛型类型
* 1.方法的返回值可以是使用声明的泛型类型
* 2.方法的参数也可以是声明类的泛型类型
* 3.方法体内可以使用泛型类型
*/
public T get(Integer id){
return null;
}
public void save(T entity){
}
}
2.
/**
* 泛型方法: 在方法声明时, 同时声明泛型. 在方法的返回值, 参数列表以及方法体中都可以使用泛型类型.
* public static <T> T get(Integer id){
* T result = null;
* return result;
* }
* 把指定类型的数组中的元素放入到指定类型的集合中
*/
㈧ JAVA里的domain和都是指什么啊
: data access Object是后台实现业务逻辑的java类;
对应DAO还有个DTO是Data transfer Object数据运输对象,它是一个定义了很多变量及变量的get,set方法的类,常用来做流程方法的参数.也可以看成是一个自定义的数据类型;
domain是范围,界线,也被用来批一个变量的有效作用域
也常用这个词做一个包,然后在里面放些DAO类文件.
net..domain.AddUserDao
㈨ java 中如何调用泛型的方法
这种也使用泛型,就很难达到设计的意愿,维护起来也相对困难一些。
这要求不是泛型的使用,因为类型不确定,而是要使用反射的方法调用了。
㈩ java中泛型的设计模式有哪些优点
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。
参考资料:http://ke..com/view/1436058.htm