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

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

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

Java 泛型

Java 泛型是什么

官方定義:

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

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

優(yōu)缺點:

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

​ 缺點:降低了代碼的可讀性

泛型類

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

泛型類的格式

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

如:

public class Myname <K,V> 

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

泛型類舉例

泛型類:

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

學生類:

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());
	}
}

打印結果:

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

泛型方法

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

泛型方法的格式

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

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

打印結果:

你好
200
true
99.9

泛型接口

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

泛型接口的格式

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

public interface IFanXingJieKou<T>

泛型接口舉例

泛型接口類:

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

泛型接口實現(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"));
	}
}

打印結果:

hello

總結

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

相關文章

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

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

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

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

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

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

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

    springmvc多事務提交和回滾問題

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

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

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

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

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

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

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

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

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

    基于MapperXML掃描的問題

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

    SpringBoot?Mail郵件任務詳情

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

最新評論

满城县| 邵武市| 营山县| 东乡族自治县| 富宁县| 合水县| 万州区| 全椒县| 建宁县| 南康市| 三门峡市| 瓦房店市| 新野县| 罗甸县| 城固县| 肃北| 龙岩市| 汾西县| 嘉善县| 巴楚县| 体育| 庆元县| 扎赉特旗| 衡阳市| 宽甸| 马公市| 高要市| 南川市| 庆元县| 格尔木市| 盱眙县| 常山县| 扎囊县| 肇庆市| 翼城县| 常宁市| 邯郸县| 望奎县| 六安市| 嘉禾县| 衢州市|