import java.util.ArrayList;
/**
* 泛型入门测试类
*
*
*/
public class FanXingTest {
public static void main(String[] args) {
/*
1,什么是泛型?
答:泛型是在jdk1.5以后出的一个小工具,他是一个程序的语法糖,它只在程序编译器存在,不会再运行期存在,也就是在JVM虚拟机
中是没有泛型这个概念的。
2,泛型有什么用?
答:泛型可以检查集合的类型是否符合预期,泛型只是一个检查者,将异常拦截在编译期
3,泛型怎么用?
泛型可以用在接口 方法 和返回值上
如:
public interface Collection<E> {} 接口上
public <E> void print(E e) {} 方法上
这里需要注意如果在方法返回值前声明了一个<E>表示后面出现的E是泛型,而不是普通的java变量。
4,泛型在开发时的常用的名称及其含义?
答:
<E> E名称通常在集合中使用 也就是Element
<?> ?表示不确定的JAVA类型
<T> Type(Java 类)
<K> Key(键)
<V> Value(值)
*/
ArrayList arrayList = new ArrayList(); //不使用泛型时可以向集合中存放任何类型的元素
arrayList.add("String"); //存放string 类型
arrayList.add(0.99); //存放double类型
arrayList.add(10); //存放 int 类型
//但是取得时候可能会出现一些类型转换的错误
for (Object obj : arrayList) {
String obj1 = (String) obj;
System.out.println(obj1);
}
/*
控制台会报错: 无法将Double类型转换成string类型
String
Exception in thread "main" java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String
at APITestPackage.FanXingTest.main(FanXingTest.java:43)
*/
//<String> 尖括号里如果规定了类型那么集合中存放的只能是规定的类型 否者代码会编译报错
ArrayList<String> stringArrayList = new ArrayList<>();
//向集合中添加元素
stringArrayList.add("string");
// stringArrayList.add(0.99); 会在编译时报错
// stringArrayList.add(10); 会在编译时报错
for (Object obj : stringArrayList) {
String obj1 = (String) obj;
System.out.println(obj1);
}
//正常输出:string
}
}
あなたは学校を失いましたか?