vue项目接口域名动态的获取方法
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.showType();
int i= intOb.getOb();
System.out.println("value= " + i);
System.out.println("----------------------------------");
//定义泛型类Gen的一个String版本
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 GenericsFoo GenericsFoo 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 = new CollectionGenFoo CollectionGenFoo extends Collection> listFoo1 = null; listFoo1=new CollectionGenFoo System.out.println("实例化成功!"); } } output: 实例化成功! 五 泛型方法: public class GenericFunction { public 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
GenericsFoo
GenericsFoo
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 = new CollectionGenFoo
CollectionGenFoo extends Collection> listFoo1 = null;
listFoo1=new CollectionGenFoo
System.out.println("实例化成功!");
}
}
output:
实例化成功!
五 泛型方法:
public class GenericFunction {
public
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~