欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一篇文章帶你了解java泛型--泛型類,泛型方法,泛型接口

 更新時間:2021年08月05日 10:20:26   作者:再來半包  
這篇文章主要介紹了java泛型基礎(chǔ)知識及通用方法,從以下幾個方面介紹一下java的泛型: 基礎(chǔ), 泛型關(guān)鍵字, 泛型方法, 泛型類和接口,感興趣的可以了解一下

Java 泛型

Java 泛型是什么

官方定義:

泛型是Java SE 1.5的新特性,泛型的本質(zhì)就是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定為一個參數(shù)

這種參數(shù)類型可以用在類、接口和方法的創(chuàng)建中,分別成為泛型類、泛型接口、泛型方法

優(yōu)缺點(diǎn):

​ 優(yōu)點(diǎn):可以不用再類型轉(zhuǎn)換了

​ 缺點(diǎn):降低了代碼的可讀性

泛型類

泛型類:當(dāng)一個類要操作的引用數(shù)據(jù)類型不確定的時候,可以給該類定義一個形參,用到這個類的時候,通過傳遞類型參數(shù)的形式,來確定要操作的具體的對象類型。在JDK1.5之前,為了提高代碼的通用性,通常把類型定義為所有類的父類型:Object,這樣做有兩大弊端:1、在具體操作的時候要進(jìn)行強(qiáng)制類型轉(zhuǎn)換;2、這樣還是指定了類型,還是不靈活,對具體類型的方法未知且不安全

泛型類的格式

泛型類的格式:在類名后面聲明類型變量,泛型類可以有多個類型變量

如:

public class Myname <K,V> 

什么時候使用泛型類:只要類中操作的引用數(shù)據(jù)類型不確定,就可以定義泛型類。通過使用泛型類,可以省去強(qiáng)制類型轉(zhuǎn)換的類型轉(zhuǎn)換異常的麻煩

泛型類舉例

泛型類:

public class FanXingLei<T> {
	public T getE(T t)
	{
		return t;
	}
}

學(xué)生類:

public class Student {
public String name;
public int age;

public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public int getAge() {
	return age;
}
public void setAge(int age) {
	this.age = age;
}
public Student(String name, int age) {
	super();
	this.name = name;
	this.age = age;
}
@Override
public String toString() {
	return "Student [name=" + name + ", age=" + age + "]";
}
}	

教師類:

public class Teacher {
	
public String name;
public int age;
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public int getAge() {
	return age;
}
public void setAge(int age) {
	this.age = age;
}
public Teacher(String name, int age) {
	super();
	this.name = name;
	this.age = age;
}
@Override
public String toString() {
	return "Teacher [name=" + name + ", age=" + age + "]";
}
}

測試類:

public static void main(String[] args) {
		FanXingLei<Student> stu=new FanXingLei<Student>();
		
		Student student=new Student("小明", 20);
		Teacher teacher=new Teacher("小紅", 27);
		FanXingLei<Teacher> tu=new FanXingLei<Teacher>();
		System.out.println(stu.getE(student).getClass().getName());
		System.out.println(tu.getE(teacher).getClass().getName());
		
		System.out.println(stu.getE(student).toString());
		System.out.println(tu.getE(teacher).toString());
	}
}

打印結(jié)果:

rj.cd.Fx01.Student
rj.cd.Fx01.Teacher
Student [name=小明, age=20]
Teacher [name=小紅, age=27]

泛型方法

目的:泛型方法也是為了調(diào)高代碼的重用性和程序安全性。編程原則:盡量設(shè)計泛型方法解決問題,如果設(shè)計泛型方法可以取代泛型整個類,應(yīng)該采用泛型方法(如果泛型方法可以搞定就不建議使用泛型類)。

泛型方法的格式

泛型方法的格式:類型變量放在修飾符后面和返回類型前面,如:

public static <E> E getMax(T...in)   //三個點(diǎn)表示為多個參數(shù)

泛型方法舉例

public class Test {
	public static void main(String[] args) {
		print("你好");
		print(200);
		print(true);
		print(99.9);
}
    
public static <T> void print(T t) {
	System.out.println(t);
}
}

打印結(jié)果:

你好
200
true
99.9

泛型接口

將泛型原理用于接口實(shí)現(xiàn)中,就是泛型接口。

泛型接口的格式

泛型接口的格式:泛型接口格式類似于泛型類的格式,接口中的方法的格式類似于泛型方法的格式

public interface IFanXingJieKou<T>

泛型接口舉例

泛型接口類:

public interface IFanXingJieKou <T> {
	public T read(T t);	
}

泛型接口實(shí)現(xiàn)類:

public class FanXingImpl implements IFanXingJieKou<String> {
	@Override
	public String read(String t) {
		return t;
	}
}

測試接口類:

public class Test {
	public static void main(String[] args) {
		IFanXingJieKou<String> fK=new FanXingImpl();
		System.out.println(fK.read("hello"));
	}
}

打印結(jié)果:

hello

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Spring的@Lazy懶加載注解用法詳細(xì)解析

    Spring的@Lazy懶加載注解用法詳細(xì)解析

    這篇文章主要介紹了Spring的@Lazy懶加載注解用法詳細(xì)解析,SpringIoC容器會在啟動的時候?qū)嵗袉螌?shí)例 bean ,如果我們想要實(shí)現(xiàn) Spring 在啟動的時候延遲加載 bean,即在首次調(diào)用bean的時候再去執(zhí)行初始化,就可以使用 @Lazy 注解來解決這個問題,需要的朋友可以參考下
    2023-11-11
  • Java編寫超時工具類實(shí)例講解

    Java編寫超時工具類實(shí)例講解

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于Java編寫超時工具類實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02
  • 使用String轉(zhuǎn)換到Map結(jié)構(gòu)

    使用String轉(zhuǎn)換到Map結(jié)構(gòu)

    這篇文章主要介紹了使用String轉(zhuǎn)換到Map結(jié)構(gòu),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 詳解SpringCloud Zuul過濾器返回值攔截

    詳解SpringCloud Zuul過濾器返回值攔截

    Zuul作為網(wǎng)關(guān)服務(wù),是其他各服務(wù)對外中轉(zhuǎn)站,通過Zuul進(jìn)行請求轉(zhuǎn)發(fā)。這篇文章主要介紹了詳解SpringCloud Zuul過濾器返回值攔截,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 快速搭建Spring Boot+MyBatis的項目IDEA(附源碼下載)

    快速搭建Spring Boot+MyBatis的項目IDEA(附源碼下載)

    這篇文章主要介紹了快速搭建Spring Boot+MyBatis的項目IDEA(附源碼下載),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • java正則表達(dá)式之Pattern與Matcher類詳解

    java正則表達(dá)式之Pattern與Matcher類詳解

    這篇文章主要給大家介紹了關(guān)于java正則表達(dá)式之Pattern與Matcher類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java中實(shí)現(xiàn)多重排序的幾種方法小結(jié)

    Java中實(shí)現(xiàn)多重排序的幾種方法小結(jié)

    Java中的多重排序通常指的是同時對一個集合中的兩個或更多列或多維度的數(shù)據(jù)進(jìn)行排序,這通常通過自定義Comparator實(shí)現(xiàn),可以結(jié)合Arrays.sort()或Collections.sort()方法,當(dāng)需要進(jìn)行多重排序時,即根據(jù)多個字段進(jìn)行排序,我們可以采用以下幾種方法
    2024-10-10
  • 聊聊Spring Cloud Cli 初體驗(yàn)

    聊聊Spring Cloud Cli 初體驗(yàn)

    這篇文章主要介紹了聊聊Spring Cloud Cli 初體驗(yàn),SpringBoot CLI 是spring Boot項目的腳手架工具。非常具有實(shí)用價值,需要的朋友可以參考下
    2018-04-04
  • Java設(shè)計模式以虹貓藍(lán)兔的故事講解適配器模式

    Java設(shè)計模式以虹貓藍(lán)兔的故事講解適配器模式

    適配器模式(Adapter?Pattern)是作為兩個不兼容的接口之間的橋梁。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個獨(dú)立接口的功能
    2022-04-04
  • Java中for(;;)和while(true)的區(qū)別

    Java中for(;;)和while(true)的區(qū)別

    這篇文章主要介紹了 Java中for(;;)和while(true)的區(qū)別,文章圍繞for(;;)和while(true)的相關(guān)自來哦展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對大家有所幫助
    2021-11-11

最新評論