当前位置: 首页 > news >正文

厦门市翔安建设局网站网络推广员好做吗

厦门市翔安建设局网站,网络推广员好做吗,一键生成表白网站,湛江vi设计公司泛型 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 Java的泛型是伪…

泛型

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。

泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,这也就是通常所说类型擦除 。泛型擦除

泛型一般有三种使用方式:泛型类、泛型接口、泛型方法。

public class Type<E>{}
public interface Interface<E> {}
public <E> E test(E e) {return e;
}

<? extends T>和<? super T>的区别 【了解】

分两种情况:

1. 作为容器时 【了解】

<? extends T>没有意义,只能存null

<? super T>可以放它本身和其子类类型,可以存null

public static void main(String[] args) {SuperMan man = new SuperMan();Person p = new Person("", 1);Student s = new Student("", 1);List<? extends Person> list = new ArrayList();
//		list.add(man);
//		list.add(p);
//		list.add(s);
//		list.add(1);list.add(null);List<? super Person> list1 = new ArrayList();
//		list1.add(new Object());
//		list1.add(man);list1.add(p);list1.add(s);list1.add(null);
//		list1.add(1);}
public class Person extends SuperMan implements Comparable{private String name;private int age;//省略部分代码}class Student extends Person{public Student(String name, int age) {super(name, age);}}class SuperMan {}

2. 作为方法参数时

<? extends T>支持其本身类型及其子类类型,也就是设置上限。

<? super T>支持本身类型及其父类类型,也就是设置下限。

public static void main(String[] args) {List<Object> listObj = new ArrayList();List<SuperMan> listMan = new ArrayList();List<Person> listPson = new ArrayList();List<Student> listStu = new ArrayList();// ? extends Person
//		test(listObj);
//		test(listMan);test(listPson);test(listStu);// ? super Persontest1(listObj);test1(listMan);test1(listPson);
//		test1(listStu);}public static void test(List<? extends Person> list) {}public static void test1(List<? super Person> list) {}

常用的通配符为: T,E,K,V,?通配符介绍

  • ? 表示不确定的 java 类型
  • T (type) 表示具体的一个java类型
  • K V (key value) 分别代表java键值中的Key Value
  • E (element) 代表Element

泛型的使用限制

1. 无法使用基本数据类型

List<int> list = new ArrayList<>(); // 编译时错误

2. 无法创建泛型参数类型的实例

public <E> void test(E e) {E e1 = new E(); // 编译时错误
}

但是可以通过反射来创建对象

public <E> void test(E e) {E e1 = e.getClass().newInstance();// 正确
}

3. 不能为static字段(属性)声明为泛型类型

class Test<T>{private static T name; // 编译错误private T age; // 正确
}

4. 无法使用泛型类型进行强制类型转换或者 instanceof

List<Integer> li = new ArrayList<>();
List<Number> ln = (List<Number>)li; //编译错误

除非使用无界符号(?)才可以强制转换

List<?> li = new ArrayList<>();
List<Number> ln = (List<Number>)li;
// 或者
List<Integer> li = new ArrayList<>();
List<?> ln = (List<?>)li;

在某种情况下,编译器知道泛型类型始终有效并允许强制类型转换

List<String> li = new ArrayList<>();
ArrayList<String> ln = (ArrayList<String>)li;

instanceof

public <E> void test(List<E> list) {if(list instanceof ArrayList<String>) {} //编译错误
}

运行时是不跟踪参数类型的,所以无法区分泛型类型。可以使用无界符号

public <E> void test(List<E> list) {if(list instanceof ArrayList<?>) {} //正确
}

5. 无法创建泛型类型的数组

List<String>[] lists = new ArrayList<String>[2]; //编译时错误

将不同类型元素插入到数组中:

Object[] objs = new String[2];
objs[0] = "s";
objs[1] = 1; // java.lang.ArrayStoreException

使用集合进行相同的操作

Object[] obs = new List<String>[2]; // 编译错误
obs[0] = new ArrayList<String>();
obs[1] = new ArrayList<Integer>();

6. 无法创建、捕获或者抛出泛型类型异常

泛型不能直接或间接扩展Throwable类。

class Ex<T> extends Exception{} // 编译错误
class Exc<T> extends Throwable{} // 编译错误

无法捕获泛型类型实例

public <T extends Exception> void test() {try {}catch(T t) { // 编译错误}
}

但是可以在throws子句中出现

public <T extends Exception> void test() throws T{}

7. 泛型擦除到原生类型的方法无法重载

​ 因为泛型擦除后,方法的签名一样。

public void test(List<String> list) {} //编译错误
public void test(List<Integer> list) {} // 编译错误
http://www.hkea.cn/news/616824/

相关文章:

  • 网站建设课程简介图片百度官网认证免费
  • 月夜影视在线观看免费完整版韩剧关键词排名优化报价
  • 做网站的工作时间兰州seo公司
  • css怎么嵌入到html直通车关键词优化口诀
  • 虚拟网站php专业型seo网站关键词排名提升
  • 找人合伙做网站平台b2b电商平台
  • 手机网站建设技术方案找网站设计公司
  • 杭州如何设计公司网站惠州seo网站推广
  • 成都网站建设门户大连企业网站建站模板
  • 游戏卡充值可以做网站吗百度竞价关键词出价技巧
  • 建设企业网站就等于开展网络营销网店推广实训报告
  • dede无法更新网站主页到百度联盟注册
  • wordpress支持爱奇艺企业网站seo托管怎么做
  • 永川做网站的武汉百度快速排名提升
  • 做网站的故意给中病毒网络营销广告
  • 关于阅读类网站的建设规划书友情链接系统
  • 专业做幼儿园设计的网站百度小程序关键词优化
  • 腾龙时时彩做号网站整站优化关键词排名
  • 正规的网站制作与推广百度广告运营
  • 网站建设估价引擎搜索有哪些
  • 东莞网站建设选菲凡网络如何制作网站
  • 网站收录系统备案查询官网
  • 临朐县网站建设利用搜索引擎营销成功的案例
  • 利用网盘做视频网站镇江优化推广
  • 视频微网站开发哪个公司网站设计好
  • 品网站建设智能搜索引擎
  • 怎样在百度建网站seo建设者
  • 四海网络网站建设咨询什么叫做网络营销
  • 安徽建设网官方网站优化分析
  • 网站根目录文件名游戏推广员是做什么的