泛型理解之元组类库

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">java编程思想一直是程序员比较害怕阅读并且很难懂的一本“高端”书籍,最近项目不太紧,给自己规定每天看三小节,并将自己理解的知识和课后习题依照自己的</span>

理解给予答案,纯属学习,工作刚半年,有太多东西需要积累,技术上的和非技术上的,希望在互联网做一个“不是程序员的”程序员,多的不扯,进入正题:

(一).泛型---元组类库

如果需要一个类包含很多中不同类型的对象,可以用元组,直接将一组对象(可以是不同类型)打包进一个单一对象(泛型对象),为了创建不同长度的元组,我们需要

创建多个元组,我们可以采用继承的思想来解析元组

第一个元组,代码如下:

package com;

class Automobile{};
class cx<A,B>{
	public final A a;
	public final B b;
	protected cx(A a,B b)
	{
		this.a=a;
		this.b=b;
	}
	public A getA() {
		return a;
	}
	public B getB() {
		return b;
	}
	public String toString()
	{
		return "("+a+","+b+")";
	}
}

class cx_a<A,B,C> extends cx<A,B>
{
	public final C c;
	public C getC() {
		return c;
	}
	public cx_a(A a, B b,C c) {
		super(a, b);
		this.c=c;
		// TODO Auto-generated constructor stub
	}
	public String toString()
	{
		return "("+a+","+b+","+c+")";
	}
}

class cx_b<A,B,C,D> extends cx_a<A,B,C>
{
	public final D d;
	public cx_b(A a,B b,C c,D d)
	{
		super(a,b,c);
		this.d=d;
	}
	public D getD() {
		return d;
	}
	public String toString()
	{
		return "("+a+","+b+","+c+","+d+")";
	}
}
public class test<A,B,C,D,E> extends cx_b<A,B,C,D>
{
	private final E e;
	public test(A a,B b,C c,D d,E e)
	{
		super(a,b,c,d);
		this.e=e;
	}
	public E getE() {
		return e;
	}
	public String toString()
	{
		return "("+a+","+b+","+c+","+d+","+e+")";
	}
	public static void main(String[] args) {
		test<String,Integer,String,String,Long> temp=new test<String,Integer,String,String,Long>("a",3,"b","c",(long) 345);
		System.out.println(temp.toString());
	}
}
注意,如果想要不同的元组长度,可以采用继承的形式,继承的子类如果想要继承父类的功能或者元素,可以用super,我这里使用final是出于安全考虑,外部类不能随意修改

父类对象的成员。


<think>嗯,用户想了解的概念、用法和示例。首先,我需要从系统指令开始,确保回答符合格式要求。比如,数学表达式要用$...$,独立公式用$$...$$,中文回答,还要生成相关问题。用户提供的引用资料主要是Java和C#的,所以可能需要结合这些例子。 首先,的定义是什么?根据引用[1],允许在定义类、接口或方法时使用类参数,提高代码重用和类安全。用户可能想知道为什么需要,比如避免类转换错误,比如在集合中使用前,取元素可能需要强制转换,容易出错。例如,引用[2]提到通常用于集合,所以需要举一个集合的例子,比如List<String>,这样编译时就能检查类,避免运行时错误。 然后,如何使用?用户可能需要分点说明,比如在类、接口、方法中使用。引用[3]提到方法使用,可能需要给出示例代码,比如public <T> void method(T param)。同时,引用[4]给出了C#的字典和集合例子,可以对比说明不同语言的语法差异,但用户主要问的是的一般概念,可能不需要深入特定语言,但示例部分可以提到不同语言的实现。 示例部分,可能需要展示一个类的定义,比如Box<T>,然后展示如何用不同类实例化。比如Box<String>和Box<Integer>。代码部分要符合格式,用反引号裹,并注明语言。例如Java的示例代码,如class Box<T> { ... }。 注意事项部分,可以提到类擦除,比如Java在运行时类信息被擦除,而C#保留了类信息。此外,限制,比如不能使用基本类,需要装箱,或者通配符的使用,如<? extends Number>。 然后生成相关问题,比如的类擦除是什么,不同语言的实现差异,通配符的作用等。需要确保问题与内容相关,并且能引导用户进一步学习。 需要检查是否所有数学表达式都正确使用了$符号,比如如果有公式的话,但这里可能用不上。回答结构要清晰,分点解释概念、用法、示例和注意事项。引用标识要自然地加在引用内容的末尾,比如引用[1]到[4]对应的位置。 最后,确保使用中文,避免使用Markdown格式,代码块用三个反引号裹,并标明语言。生成的相关问题要放在最后,用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值