美文网首页
四、Java高级--1、泛型

四、Java高级--1、泛型

作者: cybeyond | 来源:发表于2018-05-07 16:55 被阅读0次
    • 泛型
      定义:数据类型参数化,提前定义好集合中放入什么类型
      集合框架中没使用泛型和使用泛型的比较
    • 泛型规则和限制
      1、泛型的参数类型只能是引用类型,而不是简单类型,比如<int>是不可使用的
      2、可以声明多个泛型参数类型,比如<T、Q、P...>,同时还可以嵌套泛型,如list<<String>>
      3、泛型的参数类型可以使用extends语句,例如<T extends superclass>
      4、泛型的参数类型可以使用super语句,例如<T super childclass>
      5、泛型还可以使用通配符,例如<? extends ArrayListi>


      结构
    /*
    默认的list,此时创建一个mylist,里面的数据类型都可以放,不限制
    */
    package javastudy;
    
    import java.util.LinkedList;
    import java.util.List;
    
    public class Test1 {
    
       public static void main(String[] args) {
           // TODO Auto-generated method stub
           List myList=new LinkedList();
           myList.add(100);
           int x=(int)myList.get(0); //强制转换,将对象转换为int类型
           System.out.println(x);
       }
    }
    
    
    执行结果

    使用泛型,其数据类型只能是integer

    package javastudy;
    
    import java.util.LinkedList;
    import java.util.List;
    public class Test1 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            List<Integer> myList=new LinkedList<Integer>(); //只允许int类型
            myList.add(200);
            int x=myList.get(0);
            System.out.println(x);
        }
    }
    
    执行结果
    • 自定义一个泛型
    package javastudy;
    
    import java.util.LinkedList;
    import java.util.List;
    public class Test1 {
    
        public static void main(String[] args) {
            MyTest<String> mt=new MyTest<String>();
            mt.setVar("jack");
            mt.print();
        }
    }
    class MyTest<T>{  //<>是一个类型,但具体类型没有确定
        T vare ;
        void setVar(T vare){
            this.vare=vare;
        }
        T getVar(){
            return vare;
        }
        void print(){
            System.out.println(vare);
        }
    }
    
    执行结果

    *定义一个类,将泛型类型定义为类

    package javastudy;
    
    import java.util.LinkedList;
    import java.util.List;
    public class Test1 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            MyTest<Person> mt=new MyTest<Person>();//泛型类型定义为一个类
            Person p=new Person("Mark", 25);
            mt.setVar(p);  //泛型类型定义为一个类
            mt.print();
        }
    }
    class MyTest<T>{  //<>是一个类型,但具体类型没有确定
        T vare ;
        void setVar(T vare){
            this.vare=vare;
        }
        T getVar(){
            return vare;
        }
        void print(){
            System.out.println(vare);
        }
    }
    class Person{
        @Override
        public String toString() { //重写toString方法,调用print的person时,使用toString
            // TODO Auto-generated method stub
            return "姓名:"+name+",年龄:"+age;
        }
        String name;
        int age;
        Person(String name,int age){
            this.name=name;
            this.age=age;
            }
        }
    

    相关文章

      网友评论

          本文标题:四、Java高级--1、泛型

          本文链接:https://www.haomeiwen.com/subject/fzzmrftx.html