java泛型应用实例 - 自定义泛型类,方法
2014-03-24 12:42
627 查看
一、泛型类
泛型类,就是简化版的 extends 和 overwrite ,就是子类继承父类之后,进行改写方法。
泛型类实例说明:
车和房子都有品牌,名字和价钱,都是商品或者货物这种数据结构,一般需要获取品牌,名字和价钱的描述信息.
我就将货物定义为泛型类,获取描述信息就是泛型类里面的通用方法.
实例代码:
CarBean.java
HouseBean.java
GenericGoods.java
Test_1.java
输出结果:
class Generics_1.GenericGoods
This 宝马 of X costs 600!
=========
class Generics_1.GenericGoods
This 故宫 of H costs 1000!
这个GenericMethodProcess类不是泛型类,
在其中定义了定义了我们泛型方法toString, 它的功能就是按照指定的格式将Bean转换成String
GenericMethodProcess.java
Test_2.java
输出结果:
CarBean toString:brand=X;name=宝马;price=100
HouseBean toString:brand=Y;name=奔驰;price=200
转载:http://blog.csdn.net/hejiangtao/article/details/7173822#
泛型类,就是简化版的 extends 和 overwrite ,就是子类继承父类之后,进行改写方法。
泛型类实例说明:
车和房子都有品牌,名字和价钱,都是商品或者货物这种数据结构,一般需要获取品牌,名字和价钱的描述信息.
我就将货物定义为泛型类,获取描述信息就是泛型类里面的通用方法.
实例代码:
CarBean.java
package Generics_1; public class CarBean { private String brand; private String name; private String price; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } }
HouseBean.java
package Generics_1; public class HouseBean { private String brand; private String name; private String price; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } }
GenericGoods.java
package Generics_1; public class GenericGoods<T> { private T t; private String information; public GenericGoods(T t){ this.t=t; } public void setData(String sBrand, String sName, String sPrice) { this .information = "This " + sName + " of " + sBrand + " costs " + sPrice + "!" ; } public T getT() { return t; } public void setT(T t) { this.t = t; } public String getInformation() { return information; } public void setInformation(String information) { this.information = information; } public String getClassType() { return t.getClass().getName(); } }
Test_1.java
package Generics_1; public class Test_1 { public static void main(String[] args) { GenericGoods<CarBean> car = new GenericGoods<CarBean>(new CarBean()); car.setData("X", "宝马", "600"); System.out.println(car.getClass()); System.out.println(car.getInformation()); System.out.println("========="); GenericGoods<HouseBean> house = new GenericGoods<HouseBean>(new HouseBean()); house.setData("H", "故宫", "1000"); System.out.println(house.getClass()); System.out.println(house.getInformation()); } }
输出结果:
class Generics_1.GenericGoods
This 宝马 of X costs 600!
=========
class Generics_1.GenericGoods
This 故宫 of H costs 1000!
二、泛型方法
说明:这个GenericMethodProcess类不是泛型类,
在其中定义了定义了我们泛型方法toString, 它的功能就是按照指定的格式将Bean转换成String
GenericMethodProcess.java
package Generics_1; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class GenericMethodProcess {
// 泛型方法,就可以将所有的Bean按照指定格式转换成字符串, 就可以避免每个Bean都要实现toString方法. public <T>String toString(T oT) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ String sRet = ""; String sGetMethodName = ""; String sFieldName = ""; Method oMethod; Field[] oFields = oT.getClass().getDeclaredFields(); // 类中全部字段集合 if ( null != oFields){ // 该类中有字段 for (int i = 0; i < oFields.length; i++){ //逐一获取一个字段 oFields[i].setAccessible(true); // 设置 类中的private字段,可以访问 sFieldName = oFields[i].getName(); if (sFieldName.length() > 1){ //若该字段 大于 1 ,获取 get方法 名称 (处理) sGetMethodName = "get" +sFieldName.substring(0, 1).toUpperCase() //首字母大写 +sFieldName.subSequence(1, sFieldName.length()); //其余小写 }else{ sGetMethodName = "get" + sFieldName.toUpperCase(); //单字母,直接大写 } oMethod = oT.getClass().getMethod(sGetMethodName); // 获取get方法 sRet = sRet + sFieldName + "=" + oMethod.invoke(oT) + ";" ; } } //移除最后一个“ ; ” if(! "".equals(sRet)){ sRet = sRet.substring(0,sRet.length() -1); } return sRet; } }
Test_2.java
package Generics_1; import java.lang.reflect.InvocationTargetException; public class Test_2 { public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { GenericMethodProcess oGMP = new GenericMethodProcess(); CarBean oCarBean = new CarBean(); oCarBean.setBrand("X"); oCarBean.setName("宝马"); oCarBean.setPrice("100"); String sBeanStr = oGMP.toString(oCarBean); System.out.println("CarBean toString:"+sBeanStr); HouseBean oHouseBean = new HouseBean(); oHouseBean.setBrand("Y"); oHouseBean.setName("奔驰"); oHouseBean.setPrice("200"); sBeanStr = oGMP.toString(oHouseBean); System.out.println("houseBean toString:"+sBeanStr); } }
输出结果:
CarBean toString:brand=X;name=宝马;price=100
HouseBean toString:brand=Y;name=奔驰;price=200
转载:http://blog.csdn.net/hejiangtao/article/details/7173822#
相关文章推荐
- java泛型应用实例 - 自定义泛型类,方法
- java泛型应用实例 - 自定义泛型类,方法
- java泛型应用实例 - 自定义泛型类,方法
- java泛型应用实例 - 自定义泛型类,方法
- Java泛型---泛型方法和泛型类介绍及实例
- Java泛型详解:<T>和Class<T>的使用。泛型类,泛型方法的详细使用实例
- 实例讲解Android应用中自定义组合控件的方法
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
- Java中“泛型之泛型类、泛型方法“和'泛型通配符"的应用总结
- java语言基础(69)——集合框架(泛型的多种应用场景、泛型类、泛型方法、泛型接口)
- java 自定义注解应用实例
- Java泛型--泛型应用--泛型接口、泛型方法、泛型数组、泛型嵌套
- Javascript中indexOf()和lastIndexOf应用方法实例
- 一起谈.NET技术,关于c#静态方法和实例方法的辨析和应用
- 获取Spring容器中Bean实例的工具类(Java泛型方法实现)
- Android-本地方法与Java相互调用-自定义ProgressBar(锅炉压力监测例子)/NDK-JNI开发实例(七)
- Silverlight实例教程 - Out of Browser的自定义应用
- 泛型类、泛型方法及泛型应用
- 实例解析Json反序列化之ObjectMapper(自定义实现反序列化方法)
- Java自定义泛型类和泛型方法