四、Java高级--1、泛型

  • 泛型
    定义:数据类型参数化,提前定义好集合中放入什么类型
    集合框架中没使用泛型和使用泛型的比较
  • 泛型规则和限制
    1、泛型的参数类型只能是引用类型,而不是简单类型,比如是不可使用的
    2、可以声明多个泛型参数类型,比如,同时还可以嵌套泛型,如list<>
    3、泛型的参数类型可以使用extends语句,例如
    4、泛型的参数类型可以使用super语句,例如
    5、泛型还可以使用通配符,例如


    结构
/*
默认的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 myList=new LinkedList(); //只允许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 mt=new MyTest();
        mt.setVar("jack");
        mt.print();
    }
}
class MyTest{  //<>是一个类型,但具体类型没有确定
    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 mt=new MyTest();//泛型类型定义为一个类
        Person p=new Person("Mark", 25);
        mt.setVar(p);  //泛型类型定义为一个类
        mt.print();
    }
}
class MyTest{  //<>是一个类型,但具体类型没有确定
    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、泛型)