1.定义:

泛型是一种未知的数据类型,当我们不知道使用什么数据类型的时候,我们使用泛型

2.类型:

E e:Element 元素
T t:Type 类型

3.创建集合不使用泛型

好处:

  • 集合不使用泛型,默认就是Object类型,可以储存任意元素

弊端:

  • 不安全,引发异常

4.创建集合使用泛型

好处:

  • a.避免了类型转换的麻烦,存储什么类型就取出什么类型
  • b.把运行期异常(代码运行后抛出异常),提升到了编译期(写代码时会报错)

5.定义创建使用泛型的类

          public class DemoGeneric<E> {
            private E name;

            public E getName() {
                return name;
            }

            public void setName(E name) {
                this.name = name;
            }
           }
   ==========================================
           public class DemoGeneric1 {
            public static void main(String[] args) {
                DemoGeneric <String> ge = new DemoGeneric<>();
                ge.setName("姚明");
                String name = ge.getName();
                System.out.println(name);

                DemoGeneric <Integer> ge1 = new DemoGeneric<>();
                ge1.setName(1);
                Integer name1 = ge1.getName();
                System.out.println(name1);
            }
           }

6.定义创建使用泛型的方法

          public class Demomethod {
            public static void main(String[] args) {
                Demomethod me = new Demomethod();
                me.method("姚明");
                me.method(1);
                me.method(10.0);
                me.method(true);
            }

        public <E> void method(E e) {
            System.out.println(e);
        }
       }

7.定义使用泛型的接口

      public interface DemoGenericImpl <E>{
        public abstract void add(E e);

      }
      ========================================
      public class Genericimpl implements DemoGenericImpl<String>{

        @Override
        public void add(String s) {
            System.out.println(s);
        }
      }
      ========================================
      public class Genericimpl1<E> implements DemoGenericImpl<E> {
        @Override
        public void add(E e) {
            System.out.println(e);
        }
      }
      ========================================
      public class GenericMain {
        public static void main(String[] args) {
            Genericimpl ge = new Genericimpl();
            ge.add("姚明");
            Genericimpl1 ge1 = new Genericimpl1();
            ge1.add("乔丹");
            ge1.add(1);
            ge1.add(true);
        }
      }

8.泛型通配符

定义:不知道使用什么类型来接收的时候,可以使用?,?表示未知通配符
‘?’代表任意的数据类型
使用方式:

  • 不能创建对象使用
  • 只能作为方法参数使用

例:

      import java.util.ArrayList;
      import java.util.Collection;
      import java.util.Iterator;

      public class GenericMain {
        public static void main(String[] args) {
            Collection <Integer> col = new ArrayList<>();
            col.add(1);
            col.add(2);
            col.add(3);
            Collection <String> col1 = new ArrayList<>();
            col1.add("乔丹");
            col1.add("小卡");
            col1.add("詹姆斯");
            printarray(col);
            printarray(col1);
        }

        public static void printarray(Collection<?> list) {
            Iterator<?> iterator = list.iterator();
            while (iterator.hasNext())
            {
                Object o = iterator.next();
                System.out.println(o);
            }
        }

      }
Last modification:May 29th, 2020 at 01:51 pm
如果觉得我的文章对你有用,请随意赞赏