最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

Java 泛型

Java 泛型是什么

官方定義:

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

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

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

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

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

泛型類

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

泛型類的格式

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

如:

public class Myname <K,V> 

什么時(shí)候使用泛型類:只要類中操作的引用數(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 + "]";
}
}

測(cè)試類:

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è)計(jì)泛型方法解決問題,如果設(shè)計(jì)泛型方法可以取代泛型整個(gè)類,應(yīng)該采用泛型方法(如果泛型方法可以搞定就不建議使用泛型類)。

泛型方法的格式

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

public static <E> E getMax(T...in)   //三個(gè)點(diǎn)表示為多個(gè)參數(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;
	}
}

測(cè)試接口類:

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

打印結(jié)果:

hello

總結(jié)

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

相關(guān)文章

  • Django rest framework使用類視圖實(shí)現(xiàn)首頁(yè)API

    Django rest framework使用類視圖實(shí)現(xiàn)首頁(yè)API

    這篇文章主要介紹了Django rest framework使用類視圖實(shí)現(xiàn)首頁(yè)API,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 用Maven插件生成Mybatis代碼的實(shí)現(xiàn)方法

    用Maven插件生成Mybatis代碼的實(shí)現(xiàn)方法

    本文主要介紹 Maven插件生成Mybatis代碼,現(xiàn)在做開發(fā)的朋友有好多用Maven 來(lái)管理代碼,這里給大家舉個(gè)例子,有需要的同學(xué)可以看下
    2016-07-07
  • SpringBoot?LocalDateTime格式轉(zhuǎn)換方案詳解(前端入?yún)?

    SpringBoot?LocalDateTime格式轉(zhuǎn)換方案詳解(前端入?yún)?

    這篇文章主要介紹了SpringBoot?LocalDateTime格式轉(zhuǎn)換(前端入?yún)?,本文用示例介紹SpringBoot全局格式配置,將前端傳過來(lái)的時(shí)間自動(dòng)轉(zhuǎn)化為L(zhǎng)ocalDateTime,需要的朋友可以參考下
    2023-04-04
  • springmvc多事務(wù)提交和回滾問題

    springmvc多事務(wù)提交和回滾問題

    本文介紹了Spring MVC中如何配置和使用多事務(wù)管理及回滾,重點(diǎn)內(nèi)容包括配置jdbc.properties文件,使用Spring Framework 5.3版本新增的CompositeTransactionManager,以及如何在相關(guān)方法上添加@Transactional注解
    2024-09-09
  • SpringBoot整合Flyway實(shí)現(xiàn)數(shù)據(jù)庫(kù)的初始化和版本管理操作

    SpringBoot整合Flyway實(shí)現(xiàn)數(shù)據(jù)庫(kù)的初始化和版本管理操作

    Flyway?是一款開源的數(shù)據(jù)庫(kù)版本管理工具,它可以很方便的在命令行中使用,或者在Java應(yīng)用程序中引入,用于管理我們的數(shù)據(jù)庫(kù)版本,這篇文章主要介紹了SpringBoot整合Flyway實(shí)現(xiàn)數(shù)據(jù)庫(kù)的初始化和版本管理,需要的朋友可以參考下
    2023-06-06
  • Java異常體系非正常停止和分類

    Java異常體系非正常停止和分類

    這篇文章主要介紹了Java異常體系非正常停止和分類,指的是程序在執(zhí)行過程中,出現(xiàn)的非正常的情況,最終會(huì)導(dǎo)致JVM的非正常停止更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-06-06
  • 分析xxljob登入功能集成OIDC的統(tǒng)一認(rèn)證

    分析xxljob登入功能集成OIDC的統(tǒng)一認(rèn)證

    這篇文章主要為大家介紹分析xxljob登入功能集成OIDC的統(tǒng)一認(rèn)證的詳解說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • 圖片疊加效果Java代碼實(shí)現(xiàn)

    圖片疊加效果Java代碼實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了圖片疊加效果Java代碼實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 基于MapperXML掃描的問題

    基于MapperXML掃描的問題

    這篇文章主要介紹了MapperXML掃描的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringBoot?Mail郵件任務(wù)詳情

    SpringBoot?Mail郵件任務(wù)詳情

    這篇文章主要介紹了SpringBoot?Mail郵件任務(wù)詳情,文章通過spring-boot-starter-mail包展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-05-05

最新評(píng)論

凤山县| 商都县| 宣威市| 鹤岗市| 江都市| 澄城县| 廊坊市| 安远县| 陆丰市| 汪清县| 湘乡市| 铜山县| 红桥区| 隆化县| 合江县| 绵阳市| 九寨沟县| 博湖县| 乐安县| 屏东市| 和平区| 临夏县| 台中市| 神农架林区| 西贡区| 河西区| 色达县| 嘉鱼县| 多伦县| 江西省| 凌海市| 青海省| 五原县| 碌曲县| 闸北区| 晴隆县| 夏津县| 安塞县| 同仁县| 杨浦区| 福州市|