java泛型详解下篇之纯代码讲解

本文通过多个实例详细介绍了Java泛型的使用方法,包括普通泛型类、通配符、受限泛型、泛型数组等,并解释了泛型不能向上转型的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大笑这篇我将在上篇的基础上进行实例编程讲解,也就不多说废话了,直接进入编程,剖析java的多种泛型类型。

By--何泽江(KJ Internationl company)

package demoTest;

/**
* 普通泛型类
* @author <href a="mailto:hezj@china.kjlink.com"> hezejiang</href>
*
*/
public class GenericDemoTest1 {
public static void main(String args[]){
VariebleS s = new VariebleS();
s.setVar("string");
System.out.print(s.getVar().length());
}

}

class VariebleS {

private String var;

public String getVar() {
return var;
}

public void setVar(String var) {
this.var = var;
}
}

package demoTest;

/**
* 普通泛型类
* @author <href a="mailto:hezj@china.kjlink.com"> hezejiang</href>
*
*/
public class GenericDemoTest2 {
public static void main(String args[]){
NotePad<Long, String> pad = null;
pad = new NotePad<Long, String>();
pad.setKey(111L);
pad.setValue("hezejiang@china.kjlink.com");
System.out.println("key= "+pad.getKey()+"value= "+pad.getValue());

}

}

class NotePad<K, V> {

private K key;
private V value;

public K getKey() {
return key;
}
public void setKey(K key) {
this.key = key;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
}

package demoTest;

/**
* 通配符
*
* @author <href a="mailto:hezj@china.kjlink.com"> hezejiang</href>
*
*/
public class GenericDemoTest3 {
public static void main(String args[]){
Info<String> info = new Info<String>();
info.setVar("hezj@china.kjlink.com");
fun(info);

}


public static void fun(Info<?> temp){//此方法可接受任意泛型对象
System.out.println(temp);

}
}

class Info<T> {

private T var;

public T getVar() {
return var;
}

public void setVar(T var) {
this.var = var;
}

public String toString(){
return this.var.toString();

 



}
}

package demoTest;

/**
* 受限泛型
* @author <href a="mailto:hezj@china.kjlink.com"> hezejiang</href>
*
*/
public class GenericDemoTest4 {
public static void main(String args[]){
Infoo<Integer> oo = new Infoo<Integer>();//泛型为Integer
Infoo<Float> ooo = new Infoo<Float>(); //泛型为Float
Infoo<Long> oooo = new Infoo<Long>(); //泛型为Long
Infoo<Double> ooooo = new Infoo<Double>();//泛型为Double
oo.setVar(11);
ooo.setVar(11.1f);
oooo.setVar(11L);
ooooo.setVar(11.1);
fun(oo);
fun(ooo);
fun(oooo);
fun(ooooo);
}

public static void fun(Infoo<? extends Number> temp){
System.out.println(temp);
}

}

class Infoo<T> {

private T var;

public T getVar() {
return var;
}

public void setVar(T var) {
this.var = var;
}

public String toString(){
return this.var.toString();
}
}

package demoTest;

/**
* 受限泛型
* @author <href a="mailto:hezj@china.kjlink.com"> hezejiang</href>
*
*/
public class GenericDemoTest5 {
public static void main(String args[]){
Infooo<String> oo = new Infooo<String>();//泛型为String
Infooo<Object> ooo = new Infooo<Object>(); //泛型为Object
oo.setVar("hezj@china.kjlink.com");
ooo.setVar(new Object());
fun(oo);
fun(ooo);
}

public static void fun(Infooo<? super String> temp){
System.out.println(temp);
}

}

class Infooo<T> {

private T var;

public T getVar() {
return var;
}

public void setVar(T var) {
this.var = var;
}

public String toString(){
return this.var.toString();
}
}

package demoTest;

/**
* 泛型不能向上转型
* @author <href a="mailto:hezj@china.kjlink.com"> hezejiang</href>
*
*/
public class GenericDemoTest6 {
public static void main(String args[]){
Infooo<String> oo = new Infooo<String>();//泛型为String
Infooo<Object> ooo = null; //泛型为Object
ooo = oo ; //向上转型出错
}

}

class Infoooo<T> {

private T var;

public T getVar() {
return var;
}

public void setVar(T var) {
this.var = var;
}

public String toString(){
return this.var.toString();
}
}

package demoTest;

/**
* 数组泛型
* @author <href a="mailto:hezj@china.kjlink.com"> hezejiang</href>
*
*/
public class GenericDemoTest7 {
public static void main(String args[]){
Integer i[] = fun1(1,2,3,4,5,6);
fun2(i);
}

public static <T> T[] fun1(T...arg){//接收可变参数
return arg; //return out
}

public static <T> void fun2(T param[]){//输出
System.out.println("接收泛型数组");
for(T t : param){
System.out.println(t + "、");
}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值