• Java 泛型(类,接口,方法)的概述


    泛型概述:
        泛型:是JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型它的本质是参数化类型,
        也就是说所操作的数据类型被指定为一个参数一提到参数,最熟悉的就是定义方法时有形参,
        然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,
        然后在使用/调用时传入具体的类型这种参数类型可以用在类、方法和接口中,分别被称为泛型类、泛型方法、泛型接口
    泛型定义格式:
        .<类型>:指定一种类型的格式。这里的类型可以看成是形参
        .<类型1类型2…>:指定多种类型的格式,多种类型之间用逗号隔开。这里的类型可以看成是形参
        .将来具体调用时候给定的类型可以看成是实参,并且实参的类型只能是引用数据类型
    泛型的好处:
        .把运行时期的问题提前到了编译期间
        .避免了强制类型转换

    泛型方法定义格式
        .格式:修饰符<类型>返回值类型方法名(类型 变量名){}
        .示例:public <T> void show(T t){}

    泛型类的定义格式
        .格式:修饰符 class 类名 <类型>{}
        .示例:public class Generic <T>{}
            ..次数的T可以写为任意的标识,常见的如T,E,K,V等形式的参数常用于表示泛型

    泛型接口的格式
        .Generic_泛型接口<T>
    泛型接口实现的格式
        .Genericimpl_泛型接口<T> implements Generic_泛型接口<T>

    以下有两个类,和一个接口)(以接口类为例)

    1.Genericimpl(接口实现类)

    2.Generic_泛型接口<T>(interface接口类)

    3.GenericDemo_泛型接口(main方法实现类)

     

    1.Genericimpl(接口实现类)

    1. package 泛型;
    2. public class Genericimpl_泛型接口<T> implements Generic_泛型接口<T> {
    3. @Override
    4. public void show(T t) {
    5. // TODO 自动生成的方法存根
    6. System.out.println(t);
    7. }
    8. }

    2.Generic_泛型接口<T>(interface接口类)

    1. package 泛型;
    2. public interface Generic_泛型接口<T> {
    3. void show(T t);
    4. }

    3.GenericDemo_泛型接口(main方法实现类)

    1. package 泛型;
    2. public class GenericDemo_泛型接口 {
    3. /*
    4. 泛型接口的格式
    5. .Generic_泛型接口<T>
    6. 泛型接口实现的格式
    7. .Genericimpl_泛型接口<T> implements Generic_泛型接口<T>
    8. */
    9. public static void main(String[] args) {
    10. Generic_泛型接口 g = new Genericimpl_泛型接口();
    11. g.show("林青霞");
    12. g.show(20);
    13. g.show('岁');
    14. }
    15. }

     以下有两个类,和一个接口)(以方法为例)

    1.Generic_泛型方法

    2.GenericDemo_泛型方法(main测试类)

     

    1.Generic_泛型方法

    1. package 泛型;
    2. public class Generic_泛型方法 {
    3. // public void show(String s) {
    4. // // TODO 自动生成的方法存根
    5. //
    6. // }
    7. // public void show(Integer i) {
    8. // // TODO 自动生成的方法存根
    9. //
    10. // }
    11. //
    12. // public void show(Boolean b) {
    13. // // TODO 自动生成的方法存根
    14. //
    15. // }
    16. public <T>void show(T t) {
    17. // TODO 自动生成的方法存根
    18. System.out.println(t);
    19. }
    20. }

    2.GenericDemo_泛型方法(main测试类)

    1. package 泛型;
    2. public class GenericDemo_泛型方法 {
    3. /*
    4. GenericDemo_泛型方法定义格式:
    5. .格式:修饰符<类型>返回值类型方法名(类型 变量名){}
    6. .示例:public <T> void show(T t){}
    7. */
    8. public static void main(String[] args) { //其实这也是一个方法obj类型的也不是需先定义
    9. // TODO 自动生成的方法存根
    10. Generic_泛型方法 g = new Generic_泛型方法();
    11. g.show(true);
    12. g.show(20);
    13. g.show("java");
    14. }
    15. }

     以下由四个类(以类为例子)

    1.GenericDemo(mian方法测试类)

    2.student类

    3.teacher类

    4.Generic(泛型类)

     

    1.GenericDemo(mian方法测试类)

    1. package 泛型;
    2. public class GenericDemo {
    3. /*
    4. 泛型类的定义格式:
    5. .格式:修饰符 class 类名 <类型>{}
    6. .示例:public class Generic <T>{}
    7. ..次数的T可以写为任意的标识,常见的如T,E,K,V等形式的参数常用于表示泛型
    8. 泛型方法
    9. .
    10. */
    11. public static void main(String[] args) {
    12. // TODO 自动生成的方法存根
    13. student s = new student();
    14. s.setAge(20);
    15. s.setName("林青霞");
    16. System.out.println(s.getAge()+s.getName());
    17. /*-------------*/System.out.println("-----------------");/*--------------------*/
    18. teacher t = new teacher();
    19. t.setAge(20);
    20. System.out.println(s.getAge());
    21. /*-------------*/System.out.println("-----------------");/*--------------------*/
    22. Generic<String> g1=new Generic<String>();
    23. g1.setT("林青霞");
    24. System.out.println(g1.getT());
    25. /*-------------*/System.out.println("-----------------");/*--------------------*/
    26. Generic<Integer> g2=new Generic<Integer>();
    27. g2.setT(200);
    28. System.out.println(g2.getT());
    29. /*-------------*/System.out.println("-----------------");/*--------------------*/
    30. Generic g3=new Generic();
    31. g3.setT("ASDSAD");
    32. g3.setT(5286);
    33. g3.setT('d');
    34. System.out.println(g3.getT());
    35. /*-------------*/System.out.println("-----------------");/*--------------------*/
    36. Generic<Boolean> g4=new Generic<Boolean>();
    37. g4.setT(true);
    38. System.out.println(g4.getT());
    39. }
    40. }

    2.student类

    1. package 泛型;
    2. public class student {
    3. private String name;
    4. private int age;
    5. /**
    6. * @param name
    7. * @param age
    8. */
    9. public student(String name, int age) {
    10. super();
    11. this.name = name;
    12. this.age = age;
    13. }
    14. /**
    15. *
    16. */
    17. public student() {
    18. super();
    19. }
    20. /**
    21. * @return name
    22. */
    23. public String getName() {
    24. return name;
    25. }
    26. /**
    27. * @param name 要设置的 name
    28. */
    29. public void setName(String name) {
    30. this.name = name;
    31. }
    32. /**
    33. * @return age
    34. */
    35. public int getAge() {
    36. return age;
    37. }
    38. /**
    39. * @param age 要设置的 age
    40. */
    41. public void setAge(int age) {
    42. this.age = age;
    43. }
    44. }

    3.teacher类

    1. package 泛型;
    2. public class teacher {
    3. private Integer age;
    4. /**
    5. * @return age
    6. */
    7. public Integer getAge() {
    8. return age;
    9. }
    10. /**
    11. * @param age 要设置的 age
    12. */
    13. public void setAge(Integer age) {
    14. this.age = age;
    15. }
    16. }

    4.Generic(泛型类)

    1. package 泛型;
    2. public class Generic<T>{
    3. private T t;
    4. /**
    5. * @return t
    6. */
    7. public T getT() {
    8. return t;
    9. }
    10. /**
    11. * @param t 要设置的 t
    12. */
    13. public void setT(T t) {
    14. this.t = t;
    15. }
    16. }

  • 相关阅读:
    使用Jekyll搭建博客,并绑定域名
    MySQL面试题
    网络安全(黑客技术)—0基础学习手册
    Java面试常见题:手写单向链表的实现思路
    ScrollView如何裁剪粒子特效
    Java—Collection
    RFID系统简介:优点、应用与发展前景
    openresty(Nginx) 301重定向域名 http访问强制使用https
    【密码学】RSA的攻与防_4.0
    我是如何保护 70000 ETH 并赢得 600 万漏洞赏金的
  • 原文地址:https://blog.csdn.net/qq_51272114/article/details/125440715