Java泛型类、重构的使用及说明

 更新时间:2025年11月06日 09:33:49   作者:@纯牛奶  
文章介绍了泛型类和重构的概念、原理和应用,泛型类是一种参数化类型,可以操作不同数据类型,而重构是通过对已有代码进行修改,改善其设计、结构和可读性的过程,重构可以帮助提高代码质量、简化理解与调试、优化性能、改进设计、提高团队协作并扩展功能

一、泛型类

定义:类<>  表示泛型类   eg:

public class text <T>{
	T t;
public T getT() {
		return t;
	}
public void setT(T t) {
		this.t = t;
	}
}

text<>就是泛型类,泛型的本质是参数化类型,所操作的数据类型被指定为一个参数。可以看出这比较抽象。所以可以理解成模板,或者方程式,输入不同参数实现不同结果。

这有一个例子:对于输出String   int    double   自己定义一个输出方法 ,main函数调用输出方法。

在没有使用泛类之前,创建对象或者使用都需要定义好函数或者方法,且这都是固定死的模板,所以对于不同类型,要写不同输出方法。

而使用范类之后可以理解:这是一个万能模板,其中类型或者对象并没有写死。只要把类型定义成变量,在没有输出之前都是,直到调用输出才需要直到其类型。所以只需要一个者方法。

package 泛型类;
public class text <T>{//泛型
	T t;//可以理解未定型 ,使用时在赋类型
	
public T getT() {//get,set方法
		return t;
	}
	public void setT(T t) {
		this.t = t;
	}


public static void main(String[] args) {
	text cs=new text();
	String s="您好";
	cs.setT(s);//传递后T就是String类型
	System.out.println(cs.getT());
	
	int i=1;
	cs.setT(i);//传递后T就是int类型
	System.out.println(cs.getT());
	
	double d=3.14;
	cs.setT(d);//传递后T就是double类型
	System.out.println(cs.getT());
	
}
}

结果:

如果不用泛型结果输出类型就本应该是固定的如下:

package 非泛型类;
public class textcs {
	String s;
	
	public String getS() {
		return s;
	}
	public void setS(String s) {
		this.s = s;
	}
	
public static void main(String[] args) {
	textcs cs=new textcs();
	String s="您好";
	cs.setS(s);
	System.out.println(cs.getS());
}
}

 

package 非泛型类;
public class textcs2 {
	int i;
public int getI() {
		return i;
	}
	public void setI(int i) {
		this.i = i;
	}

public static void main(String[] args) {
	textcs2 cs=new textcs2();
	int i=1;
	cs.setI(i);
	System.out.println(cs.getI());
}
}

 

不难看出泛型如同模板,不是固定的,但是运行时必须明确指定具体的类型。

实战中泛型的使用:

如果不定义泛型类,应该创建学生集合 ArrayList<student>  list=new ArrayList<>(); //写死了。 如果在创建一个老师集合,就要到这个类来改把student改teacher比较麻烦。

定义泛型类后,要调用声明即可,可以是老师,可以是学生,可以是其他集合,更灵活更方便。

其实我们也常用泛型类 比如:ArrayList<Int>  整形集合 ArrayList<String>  字符型集合.....

二、重构

1.什么是重构:

  • 简单讲:重构就是对已有代码优化。
  • 定义:重构是指通过对软件系统中的代码进行修改改善其设计、结构和可读性的过程,而不改变其外部行为。重构目的在提高代码的质量,使其更易于理解、扩展和维护

2.为什么需要重构(重构带来好处):

  • 提高代码质量:重构可以去除冗余、复杂和低效的代码,使代码更具可读性、可维护性和可扩展性。
  • 简化理解与调试:通过重构,可以将复杂的代码分解成更小、更简洁的部分,从而更容易理解和调试。
  • 优化性能:重构可以帮助我们识别出潜在的性能问题,并进行优化,使代码运行更高效。
  • 改进设计:重构可以改进系统的整体设计,使其更灵活、可扩展和符合设计原则。
  • 提高团队协作:重构可以使代码更加清晰和可读,有利于团队成员之间的合作与沟通。
  • 扩展功能:通过重构,可以为系统添加新的功能和特性,而不会产生额外的复杂性和风险。

总结:重构可以提高代码质量简化理解与调试、优化性能、改进设计、提高团队协作并扩展功能,进而提高开发效率和软件质量

3.运用场景:

  • 代码维护、性能优化、架构改进、代码审查与重构、团队合作与知识分享,以及新功能开发等。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一篇文章带你了解SpringBoot Web开发

    一篇文章带你了解SpringBoot Web开发

    这篇文章主要介绍了使用Spring Boot搭建Java web项目及开发过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Java版给爱人表白的玫瑰花程序代码

    Java版给爱人表白的玫瑰花程序代码

    这篇文章主要讲解了Java版给爱人表白的玫瑰花程序代码,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧
    2018-05-05
  • Java 基于Spire.Cloud.SDK for Java在PDF中绘制形状

    Java 基于Spire.Cloud.SDK for Java在PDF中绘制形状

    这篇文章主要介绍了Java 基于Spire.Cloud.SDK for Java在PDF中绘制形状,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java Socket实现传输压缩对象的方法示例

    Java Socket实现传输压缩对象的方法示例

    这篇文章主要介绍了Java Socket实现传输压缩对象的方法,结合具体实例形式分析了java socket针对数据的压缩、传输、接收、解压缩等操作相关实现技巧,需要的朋友可以参考下
    2017-06-06
  • 揭秘Spring核心注解@Configuration与@Component的本质区别

    揭秘Spring核心注解@Configuration与@Component的本质区别

    在Spring框架中,@Configuration和@Component都是常用的注解,但它们有着本质的区别,本文将深入剖析这两者的核心区别,并通过代码示例展示它们的实际行为差异
    2025-07-07
  • Java wait和notifyAll实现简单的阻塞队列

    Java wait和notifyAll实现简单的阻塞队列

    这篇文章主要介绍了Java wait和notifyAll实现简单的阻塞队列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java实现宠物商店管理系统

    Java实现宠物商店管理系统

    这篇文章主要为大家详细介绍了Java实现宠物商店管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • 基于Java解析国密数字证书的操作方法

    基于Java解析国密数字证书的操作方法

    在Java环境中解析使用国密算法(如SM3WITHSM2)的数字证书可能遇到挑战,使用BouncyCastle加密库可以解决Java标准库无法识别国密算法椭圆曲线的问题,成功解析国密数字证书,添加BouncyCastle依赖并修改代码,使其支持国密算法,即可解析采用SM3WITHSM2算法的数字证书
    2024-09-09
  • Java编程swing组件JLabel详解以及使用示例

    Java编程swing组件JLabel详解以及使用示例

    这篇文章主要介绍了Java编程swing组件JLabel详解以及使用示例,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • MyBatis Mapper.xml入参List使用in函数问题

    MyBatis Mapper.xml入参List使用in函数问题

    文章主要讲述了在使用MyBatis的Mapper.xml文件时,如何正确地在in函数中使用List作为入参,作者强调了完整拷贝<if>...</if>格式的重要性,并指出稍微的改动就会导致错误
    2025-02-02

最新评论