java中泛型

写这篇文章其实也没什么别的  就是用来记录一下自己对泛型的一些理解 一是为了方便日后查看,二来也能给别人提供一些帮助吧 ~  泛型的缘来跟用处我就不在这里一一细说了,在我看来就是为了规范,提供了很好的自动封箱跟拆箱,在后面的开发中也是很便利的。但是其实呢,根本不存在泛型数组这种说法的,我们经常用的数组,也是采用了Object[]作为接受数据类型的底层,然后在我们去取的时候做了强制类型转化。

先上代码说一下泛型类,以及继承泛型类的一些注意点

/**
 * 抽象泛型父类
 * @author Administrator
 *1,子类中泛型的定义需>=父类中的泛型
 *2,泛型类中定义的方法的中如果采用了泛型的话,实现时是跟父类的
 * @param <T>
 */
public abstract class Result<T> {
	T result;
	public abstract void test (T t);
}
//子类在声明时指定了父类中的泛型的类型
class ChineseResult extends Result<String>{

	@Override
	public void test(String t) {
		
	}
	
}
//子类直接继承了泛型
class EnglishResult<T> extends Result<T>{

	@Override
	public void test(T t) {
		
	}
	
}
//子类中对泛型的定义需>=父类中的泛型
class MathResult<T,T2> extends Result<T>{

	@Override
	public void test(T t) {
		
	}
}
//子类父类都不指定类型。默认为object类型
class NaturalResult extends Result{

	@Override
	public void test(Object t) {
		
	}
}
//报错。子类实现泛型,父类不指定。称为泛型的擦除
class ScienticeResult<T> extends Result{

	@Override
	public void test(Object t) {
		
	}
	
} 
//报错。不存在子类擦除,父类不擦除的情况
class PhycicsResult extends Result<T>{

	@Override
	public void test(module_src.project.cn.jt.project3.T t) {
		
	}
		
}
上面的代码中就讲述了对于泛型类以及继承泛型类的一些注意点

接下来让我们来看看泛型接口的一些

package module_src.project.cn.jt.project3;

public interface ITeach<T> {
	void teach(T t);
}
/**
 * 子类实现泛型接口,并在接口中声明
 * @author Administrator
 *
 */
class English implements ITeach<String>{

	@Override
	public void teach(String t) {
	}
	
}

/**
 * 子类实现泛型接口,子类中泛型的定义>=接口中的泛型
 * @author Administrator
 *
 */

class YuWen<T,T1> implements ITeach<T>{

	@Override
	public void teach(T t) {
		
	}
	
}
/**
 * 子类实现泛型接口,接口不指定具体类型,擦除,但是接口中的泛型变量为object类型
 * @author Administrator
 *
 */
class Math<T> implements ITeach{

	@Override
	public void teach(Object t) {
		
	}
	
}

/**
 * 子类实现泛型接口,接口,子类均不指定具体类型
 * @author Administrator
 *
 */

class Scientist implements ITeach{

	@Override
	public void teach(Object t) {
	}
}

/**
 * 子类实现擦除,接口实现,错误
 * @author Administrator
 *
 */
class Program implements ITeach<T>{
	
}
仔细一对比,其实泛型类跟泛型接口的使用都是差不多的,都是父类中定义好的方法是随父类中的类型的。没指定时均为object类型。泛型中不能使用基本数据类型作为泛型。也就是说如果你想要指定类型为Int类型的话 只能指定为Integer,再去拆箱。关于泛型的类跟接口就先说这么多。希望有人能够指出其中的不足,下次再说一下泛型数组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值