java中generic实例详解

网友投稿 304 2023-03-14


java中generic实例详解

一介绍:

在javaSE1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。

泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

二、泛型参数:

class Gen {

privatehttp:// T ob;

//定义泛型成员变量

public Gen(T ob) {

this.ob = ob;

}

public T getOb() {

return ob;

}

public void setOb(T ob) {

this.ob = ob;

}

public void showType() {

System.out.println("T的实际类型是: " + ob.getClass().getName());

}

}

public class GenericParameter {

public static void main(String[] args){

//定义泛型类Gen的一个Integer版本

Gen intOb=new Gen(100);

intOb.showType();

int i= intOb.getOb();

System.out.println("value= " + i);

System.out.println("----------------------------------");

//定义泛型类Gen的一个String版本

Gen strOb=new Gen

strOb.showType();

String s=strOb.getOb();

System.out.println("value= " + s);

}

}

output:

T的实际类型是: java.lang.Integer

value= 100

----------------------------------

T的实际类型是: java.lang.String

value= Hello Dylan!

三、泛型类:

class GenericsFoo {

private T x;

public GenericsFoo(T x) {

this.x = x;

}

public T getX() {

return x;

}

public void setX(T x) {

this.x = x;

}

}

public class GenericClass {

public static void main(String args[]){

GenericsFoo strFoo=new GenericsFoo("Hello Generics!");

GenericsFoo douFoo=new GenericsFoo(new double("33"));

GenericsFoo objFoo=new GenericsFoo(new Object());

System.out.println("strFoo.getX="+strFoo.getX());

System.out.println("douFoo.getX="+douFoo.getX());

System.out.println("objFoo.getX="+objFoo.getX());

}

}

output:

strFoo.getX=Hello Generics!

douFoo.getX=33.0

objFoo.getX=java.lang.Object@1d0fafc

四 限制泛型:

import java.util.ArrayList;

import java.util.Collection;

class CollectionGenFoo {

private T x;

public CollectionGenFoo(T x) {

this.x = x;

}

public T getX() {

return x;

}

public void setX(T x) {

this.x = x;

}

}

public class GenericRestrict {

public static void main(String[] args) {

CollectionGenFoo listFoo = null;

listFoo = new CollectionGenFoo(new ArrayList());

CollectionGenFoo extends Collection> listFoo1 = null;

listFoo1=new CollectionGenFoo(new ArrayList());

System.out.println("实例化成功!");

}

}

output:

实例化成功!

五 泛型方法:

public class GenericFunction {

public void f(T x) {

System.out.println(x.getClass().getName());

}

public static void main(String[] args) {

GenericFunction ea = new GenericFunction();

ea.f(" ");

ea.f(10);

ea.f('a');

ea.f(ea);

}

}

output:

java.lang.String

java.lang.Integer

java.lang.Character

GenericFunction

-----------------------------

dylan presents.

总结

以上就是本文关于java中generic实例详解的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

strOb.showType();

String s=strOb.getOb();

System.out.println("value= " + s);

}

}

output:

T的实际类型是: java.lang.Integer

value= 100

----------------------------------

T的实际类型是: java.lang.String

value= Hello Dylan!

三、泛型类:

class GenericsFoo {

private T x;

public GenericsFoo(T x) {

this.x = x;

}

public T getX() {

return x;

}

public void setX(T x) {

this.x = x;

}

}

public class GenericClass {

public static void main(String args[]){

GenericsFoo strFoo=new GenericsFoo("Hello Generics!");

GenericsFoo douFoo=new GenericsFoo(new double("33"));

GenericsFoo objFoo=new GenericsFoo(new Object());

System.out.println("strFoo.getX="+strFoo.getX());

System.out.println("douFoo.getX="+douFoo.getX());

System.out.println("objFoo.getX="+objFoo.getX());

}

}

output:

strFoo.getX=Hello Generics!

douFoo.getX=33.0

objFoo.getX=java.lang.Object@1d0fafc

四 限制泛型:

import java.util.ArrayList;

import java.util.Collection;

class CollectionGenFoo {

private T x;

public CollectionGenFoo(T x) {

this.x = x;

}

public T getX() {

return x;

}

public void setX(T x) {

this.x = x;

}

}

public class GenericRestrict {

public static void main(String[] args) {

CollectionGenFoo listFoo = null;

listFoo = new CollectionGenFoo(new ArrayList());

CollectionGenFoo extends Collection> listFoo1 = null;

listFoo1=new CollectionGenFoo(new ArrayList());

System.out.println("实例化成功!");

}

}

output:

实例化成功!

五 泛型方法:

public class GenericFunction {

public void f(T x) {

System.out.println(x.getClass().getName());

}

public static void main(String[] args) {

GenericFunction ea = new GenericFunction();

ea.f(" ");

ea.f(10);

ea.f('a');

ea.f(ea);

}

}

output:

java.lang.String

java.lang.Integer

java.lang.Character

GenericFunction

-----------------------------

dylan presents.

总结

以上就是本文关于java中generic实例详解的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:api接口文档设计(api接口的简单编写方式)
下一篇:app接口压力测试用例(app接口压力测试用例设计)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~