java创建十个类,Java创建一个通用类

示例

泛型使类,接口和方法能够将其他类和接口用作类型参数。

本示例使用通用类Param获取单个类型参数 T,并用尖括号(<>)分隔:

public class Param {

private T value;

public T getValue() {

return value;

}

public void setValue(T value) {

this.value= value;

}

}

要实例化此类,请提供类型参数代替T。例如Integer:

Param integerParam = new Param();

type参数可以是任何引用类型,包括数组和其他泛型类型:

Param stringArrayParam;

Param int2dArrayParam;

Param> objectNestedParam;

在Java SE 7和更高版本中,可以将一个空的一组类型参数(<>)称为菱形替换类型参数:

Java SE 7

Param integerParam = new Param<>();

与其他标识符不同,类型参数没有命名约束。但是,它们的名称通常是大写目的的首字母。(甚至在整个JavaDocs中都是这样。)

示例包括T“ type”,E“ element”和K/ V“ key” /“ value”。

扩展泛型类

public abstract class AbstractParam {

private T value;

public T getValue() {

return value;

}

public void setValue(T value) {

this.value= value;

}

}

AbstractParam是使用类型参数声明的抽象类T。扩展此类时,可以用编写在里面的类型参数替换该类型参数<>,或者可以保持不变。在下面的第一个和第二个示例中,String并Integer替换type参数。在第三个示例中,type参数保持不变。第四个示例根本不使用泛型,因此类似于类具有Object参数的情况。编译器会警告您AbstractParam是原始类型,但会编译ObjectParam该类。第五个示例具有2个类型参数(请参见下面的“多个类型参数”),选择第二个参数作为传递给超类的类型参数。

public class Email extends AbstractParam {

// ...

}

public class Age extends AbstractParam {

// ...

}

public class Height extends AbstractParam {

// ...

}

public class ObjectParam extends AbstractParam {

// ...

}

public class MultiParam extends AbstractParam {

// ...

}

用法如下:

Email email = new Email();

email.setValue("test@example.com");

String retrievedEmail = email.getValue();

Age age = new Age();

age.setValue(25);

Integer retrievedAge = age.getValue();

int autounboxedAge = age.getValue();

Height heightInInt = new Height<>();

heightInInt.setValue(125);

Height heightInFloat = new Height<>();

heightInFloat.setValue(120.3f);

MultiParam multiParam = new MultiParam<>();

multiParam.setValue(3.3);

请注意,在Email类中,该方法的行为就像它具有的签名一样,而该方法的行为就像在声明时一样。T getValue()String getValue()void setValue(T)void setValue(String)

也可以使用带有空花括号({})的匿名内部类实例化:

AbstractParam height = new AbstractParam(){};

height.setValue(198.6);

请注意,不允许将Diamond与匿名内部类一起使用。

多种类型的参数

Java提供了在通用类或接口中使用多个类型参数的能力。通过在尖括号之间放置逗号分隔的类型列表,可以在类或接口中使用多个类型参数。例:

public class MultiGenericParam {

private T firstParam;

private S secondParam;

public MultiGenericParam(T firstParam, S secondParam) {

this.firstParam= firstParam;

this.secondParam= secondParam;

}

public T getFirstParam() {

return firstParam;

}

public void setFirstParam(T firstParam) {

this.firstParam= firstParam;

}

public S getSecondParam() {

return secondParam;

}

public void setSecondParam(S secondParam) {

this.secondParam= secondParam;

}

}

使用方法如下:

MultiGenericParam aParam = new MultiGenericParam("value1", "value2");

MultiGenericParam dayOfWeekDegrees = new MultiGenericParam(1, 2.6);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值