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

南山网站建设哪家效益快建设网站成都

南山网站建设哪家效益快,建设网站成都,中国最大的博客网站,做淘客网站要备案1.泛型 介绍#xff1a; 泛型可以在编译阶段约束操作的数据类型#xff0c;并进行检查。 应用场景#xff1a; 如果在定义类、方法、接口的时候#xff0c;如果类型不确定#xff0c;就可以使用泛型。 格式#xff1a; 数据类型 注意#xff1a; 泛型只支持引…1.泛型 介绍 泛型可以在编译阶段约束操作的数据类型并进行检查。 应用场景 如果在定义类、方法、接口的时候如果类型不确定就可以使用泛型。 格式 数据类型 注意 泛型只支持引用数据类型 如下图中String就是泛型 细节 1.指定泛型的具体类型后传递数据时可以传入该类型或者其子类类型 2.如果不写泛型类型默认为Object 好处 1.统一数据类型 2.把运行时期的问题提前到了编译期间避免了强制类型转换可能出现的异常因为在编译阶段类型就能确定下来 扩展 Java中的泛型为伪泛型即若使用泛型确定类型后元素若要存入集合泛型就会检查是否为规定的类存入集合中时元素为Object类但是获取元素时代码底层会将Object类强转成泛型规定的类。 且编译时会擦除泛型在class文件中集合中的元素仍为Object类。 2.泛型类 泛型类即在类名后面添加泛型约束的类。 下面创建一个泛型类 代码演示 泛型类MyArratList public class MyArrayList E {Object[] obj new Object[10];int size;public boolean add(E e) {obj[size] e;size;return true;}public E get(int index) {return (E) obj[index];}Overridepublic String toString() {return Arrays.toString(obj);} }测试类GenericsDemo public class GenericsDemo {public static void main(String[] args) {MyArrayListInteger list new MyArrayList();list.add(111);list.add(222);list.add(333);System.out.println(list);System.out.println(list.get(1));} } 运行结果 3.泛型方法 介绍 泛型方法有两种形式一种是泛型类中的方法都可以使用类名后定义的泛型第二种是在方法申明上定义自己的泛型只有本方法能用下面详细介绍第二种形式。 格式 修饰符 类型 返回值类型 方法名类型 变量名{ } 小练习 定义一个工具类ListUtil类中定义一个静态方法addAll用来添加多个集合元素 代码 ListUtil类 public class ListUtil {//因为是工具类不需要构造方法private ListUtil(){}public static E void addAll(ArrayListE list,E...e) {for (E element : e) {list.add(element);}} } 测试类Test public class Test {public static void main(String[] args) {ArrayListString list new ArrayList();ListUtil.addAll(list,aaa, bbb, ccc);System.out.println(list);} }运行结果 4.泛型接口 当借口中类型不确定时就可以使用泛型接口 格式 修饰符 interface 接口名类型{ } 使用方法 方法一.实现类给出具体类型 代码演示 演示代码具体类型为String ListString即为泛型接口重写List中的方法后其中的泛型方法类型也被指定为String public class MyArrayList2 implements ListString {Overridepublic int size() {return 0;}Overridepublic boolean isEmpty() {return false;}Overridepublic boolean contains(Object o) {return false;}Overridepublic IteratorString iterator() {return null;}Overridepublic Object[] toArray() {return new Object[0];}Overridepublic T T[] toArray(T[] a) {return null;}Overridepublic boolean add(String s) {return false;}Overridepublic boolean remove(Object o) {return false;}Overridepublic boolean containsAll(Collection? c) {return false;}Overridepublic boolean addAll(Collection? extends String c) {return false;}Overridepublic boolean addAll(int index, Collection? extends String c) {return false;}Overridepublic boolean removeAll(Collection? c) {return false;}Overridepublic boolean retainAll(Collection? c) {return false;}Overridepublic void clear() {}Overridepublic String get(int index) {return null;}Overridepublic String set(int index, String element) {return null;}Overridepublic void add(int index, String element) {}Overridepublic String remove(int index) {return null;}Overridepublic int indexOf(Object o) {return 0;}Overridepublic int lastIndexOf(Object o) {return 0;}Overridepublic ListIteratorString listIterator() {return null;}Overridepublic ListIteratorString listIterator(int index) {return null;}Overridepublic ListString subList(int fromIndex, int toIndex) {return null;} } 方法二.实现类延续泛型创建对象时再确定 代码演示 这种情况下重写的List方法中使用泛型的继续使用类名后定义的泛型 public class MyArrayList3E implements ListE {Overridepublic int size() {return 0;}Overridepublic boolean isEmpty() {return false;}Overridepublic boolean contains(Object o) {return false;}Overridepublic IteratorE iterator() {return null;}Overridepublic Object[] toArray() {return new Object[0];}Overridepublic T T[] toArray(T[] a) {return null;}Overridepublic boolean add(E e) {return false;}Overridepublic boolean remove(Object o) {return false;}Overridepublic boolean containsAll(Collection? c) {return false;}Overridepublic boolean addAll(Collection? extends E c) {return false;}Overridepublic boolean addAll(int index, Collection? extends E c) {return false;}Overridepublic boolean removeAll(Collection? c) {return false;}Overridepublic boolean retainAll(Collection? c) {return false;}Overridepublic void clear() {}Overridepublic E get(int index) {return null;}Overridepublic E set(int index, E element) {return null;}Overridepublic void add(int index, E element) {}Overridepublic E remove(int index) {return null;}Overridepublic int indexOf(Object o) {return 0;}Overridepublic int lastIndexOf(Object o) {return 0;}Overridepublic ListIteratorE listIterator() {return null;}Overridepublic ListIteratorE listIterator(int index) {return null;}Overridepublic ListE subList(int fromIndex, int toIndex) {return null;} } 5.泛型通配符 作用 可以限制类型的范围 应用场景 如果类型不确定但是知道传递的都是哪个继承体系中的就可以使用泛型的通配符 格式 extend E                表示可以传递E和E的所有子类类型 super E                  表示可以传递E和E的所有父类类型 代码演示 public class GenericsDemo2 {public static void main(String[] args) {//创建Ye Fu Zi的集合ArrayListYe list1 new ArrayList();ArrayListFu list2 new ArrayList();ArrayListZi list3 new ArrayList();//调用方法method(list1);method(list2);method(list3);}//定义方法在集合中调用对象public static void method(ArrayList? extends Ye list){System.out.println(list);}//创建最高父类爷class Ye{}//创建父继承爷class Fu extends Ye{}//创建子继承父class Zi extends Fu{} } 运行结果 也可以把上述method方法中的泛型通配符改成? super Zi 和上述代码效果一样。
http://www.zqtcl.cn/news/400102/

相关文章:

  • 上饶网站制作需要多少钱网站百度地图标注
  • 微信网站二次开发广州番禺人才网
  • 支部网站及活动室建设免费建设网站有哪些
  • 深圳福田专业网站推广互联网网站开发有哪些职位
  • 手机网站生成西安北郊做网站
  • 深圳宝安区网站建设南通建设厅网站
  • 介绍做网站的标题在线图片编辑器好用吗
  • 金华建设网站公司笔记本销售网站开发的背景
  • 国外做的好看的网站设计网络营销推广方案怎么做
  • 网站建站业务wordpress网站域名地址
  • 烟台网站制作这做菠菜网站
  • 网站建设vr百度站长
  • 织梦网站广告代码如何写网页设计你若安好便是晴天作业
  • 网站建设 上海wordpress 知更鸟 公告
  • 建小说网站需要多少钱罗湖区住房和建设网站
  • 湖南专业网站建设服务做网站的底图尺寸多大
  • 山东省住房与建设厅网站首页有名的wordpress主题商
  • 常州市金坛区网站建设毕业设计代做淘宝好还是网站好
  • 品牌网站建设营销型网站设计网站整合方案
  • 网站开发设计师网站代理什么意思
  • 网站层级关系邯郸品牌商标vi设计策划公司
  • 网站开发产品需求说明小网站代码
  • 苏州网站推广排名网站建设方案范文8篇
  • 自己做考试题目网站广州番禺区美食攻略
  • 广州做网站如何如何制作一个网页
  • 网站定制开发收费标准是多少网站代码优化方案
  • 制作卡牌的网站深圳正规煤气公司
  • 手表网站哪家好网站用图片
  • 群辉nas 做网站wordpress linux 中文
  • 平面设计素材网站排名巩义网站建设方案表