⑴ 简述java常用3种泛型定义及其作用
泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。
定义泛型方法语法格式如下:
定义泛型方法时,必须在返回值前边加一个<T>,来声明这是一个泛型方法,持有一个泛型T,然后才可以用泛型T作为方法的返回值。
Class<T>的作用就是指明泛型的具体类型,而Class<T>类型的变量c,可以用来创建泛型类的对象。
⑵ java泛型类和泛型方法
1、什么是泛型?
泛型简言之就是类型参数化,不指定类型,运行时传入类型。
如果业务需求有没有可能不指定类型?有没有可能在运行时才知道具体的类型是什么?
所以,就出现了泛型。
public class Container<K, V> {
private K key;
private V value;
public Container(K k, V v) {
key = k;
value = v;
}
public K getKey() {
return key;
}
public void setKey(K key) {
this.key = key;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
}
在编译期,是无法知道K和V具体是什么类型,只有在运行时才会真正根据类型来构造和分配内存。这就是泛型。
⑶ java 泛型方法的问题
调用泛型返回值的方法时,必须指定返回值的类型。可以通过变量声明(类型 o = toBean....)或类型强转((类型)toBean...)的形式。你的问题3在这里就可以看出,T 的类型是方法调用时确定的
⑷ java类的泛型方法调用问题
泛型可以用"<T>"代表,任意类型的,泛型方法需要什么方法类型,直接定义相应的参数即可。
解释: “<T>”是泛型的默认值,可以被任意类型所代替,如:
List<String> list = new ArayList<String>();这个就定义了一个String类型的”泛型“集合,那么T的类型就是字符串。
List<String> list = new ArayList<String>();//此处就定义了一个list参数类型,
list.add("StringBatch");//赋值给list
User user = new User();
String str = user.get(list);//这个list就是一个泛型方法值,这行代码就是泛型方法的调用。
⑸ 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 中如何调用泛型的方法
这种也使用泛型,就很难达到设计的意愿,维护起来也相对困难一些。
这要求不是泛型的使用,因为类型不确定,而是要使用反射的方法调用了。
⑺ java泛型方法的问题
你这里的String并不代表java.lang.String这个类,而是一个泛型名称,它代表传入这个方法的任何类型。换句话说,这里写成<String>和写成<T>效果是一样的,作用都是给调用这个方法时传递的类型取一个别名String或是T。调用show(10),则编译器通过自动装箱编译成调用show(Integer.valueOf(10));同理,调用show(true),编译成调用show(Boolean.valueOf(true))。
⑻ Java中怎样使用泛型T类的方法
调用泛型方法语法格式如下publicclassExampleA{
public<T>voidf(Tx){
System.out.println(x.getClass().getName());
}
publicstaticvoidmain(String[]args){
ExampleAea=newExampleA();
ea.f("");
ea.f(10);
ea.f('a');
ea.f(ea);
}
}
输出结果:
java.lang.String
java.lang.Integer
java.lang.Character
ExampleA
使用泛型方法时,不必指明参数类型,编译器会自己找出具体的类型。泛型方法除了定义不同,调用就像普通方法一样。
需要注意,一个static方法,无法访问泛型类的类型参数,所以,若要static方法需要使用泛型能力,必须使其成为泛型方法。
⑼ java 泛型方法
Java里有个最基础的概念叫方法重载。
⑽ java 泛型方法报错!
new Test1().do1((List<String>) ((List) (A.method())));
改成这样就可以了,具体原因我也不太清楚。