美文网首页
四、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、泛型

    泛型定义:数据类型参数化,提前定义好集合中放入什么类型集合框架中没使用泛型和使用泛型的比较 泛型规则和限制1、泛型...

  • Kotlin泛型的高级特性(六)

    泛型的高级特性1、泛型实化2、泛型协变3、泛型逆变 泛型实化 在Java中(JDK1.5之后),泛型功能是通过泛型...

  • kotlin--泛型

    kotlin作为一种高级语言,也提供了泛型,它的泛型比Java更为灵活 一、泛型类 1.定义泛型类 定义泛型类和J...

  • Java高级语言特性之泛型

    Java高级语言特性之泛型 Java泛型(generics)是JDK 5中引入的一个新特性,泛型提供了编译时类型安...

  • Java 泛型

    01.泛型 泛型的本质是参数化类型,使用泛型可以获得更高级的抽象。 Java泛型(generics)是JDK 5 ...

  • Kotlin-泛型和委托

    泛型 泛型的使用是为了程序有更好的扩展性。泛型类和泛型方法 泛型的高级特性java的泛型是通过类型擦除机制来实现的...

  • Java泛型教程

    Java泛型教程导航 Java 泛型概述 Java泛型环境设置 Java泛型通用类 Java泛型类型参数命名约定 ...

  • Java高级-泛型

    12.泛型 1.泛型的概念 所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返...

  • android 面试相关基础问题

    一:题目 1:java核心思想 2:java高级知识,注解,反射,泛型的理解与作用 3:framework有那方面...

  • 泛型依赖注入

    泛型依赖注入 1.定义泛型 Java代码: 2.实现基类,声明泛型 Java代码: xml代码:

网友评论

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

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