`
renjie120
  • 浏览: 237743 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D11bba82-ec4a-3d31-a3c0-c51130c62f1c
Java应用集锦
浏览量:22914
社区版块
存档分类
最新评论

关于泛型的几个代码片段

 
阅读更多

1、方法参数为泛型类型

private <T> List<T> changeDatas(
			List<DataInfo> dataes,Class<T> a) {
		List<T> ans = new ArrayList<T>();
		try {
			if (!CollectionUtils.isEmpty(dataes)) {
				for (DataInfo _data : dataes) {
					T newD = a.newInstance();
					BeanUtils.copyProperties(newD, _data);
					ans.add(newD);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return ans;
	} 

 

2、自己写的一个关于序列化,反序列化,json转换的工具类,使用到泛型类型的例子

public class MockUtil {
	 
	public static FitSdpShoppingDto morkShoppingDto(){
		return MockUtil.deserializeObject("d:\\cache\\123123123.txt",FitSdpShoppingDto.class);
	}
	
	public static void morkCacheShoopingDto(FitSdpShoppingDto shoppingDto){
		MockUtil.serializeObject(shoppingDto,"d:\\cache\\123123123.txt");
	}
	
	/**
	 * 读取文件 
	 * @param fileName
	 * @return
	 */
	public static String readFile(String fileName) {
		InputStream in;
		try {
			in = new FileInputStream(fileName);
			return IOUtils.toString(in, "GBK");

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 写入文件
	 * 
	 * @param fileName
	 * @param contant
	 */
	public static void writeFile(String fileName, String contant) {
		PrintWriter out;
		try {
			out = new PrintWriter(new BufferedWriter(new FileWriter(fileName)));
			out.print(contant);
			out.close();
		} catch (IOException e) {
			System.out.println("读写文件出现异常!");
		} catch (Exception e) {
			System.out.println("出现异常");
		}
	}

	public static void writeJsonToFile(String fileName, Object contant) {
		PrintWriter out;
		try { 
			out = new PrintWriter(new BufferedWriter(new FileWriter(fileName)));
			out.print(toJsonStr(contant));
			out.close();
		} catch (IOException e) {
			System.out.println("读写文件出现异常!");
		} catch (Exception e) {
			System.out.println("出现异常");
		}
	}
	
	/**
	 * 从json文件中解析json串并转换成java类型
	 * 
	 * @param name
	 * @param clazz
	 * @return
	 */
	public static <T> T createFromJsonFile(String name, TypeReference clazz) {
		try {
			String sqlFlie = readFile(name);
			String result = sqlFlie;
			if (StringUtils.isNotBlank(result)) {
				ObjectMapper objectMapper = JSONMapper.getInstance();
				return (T) objectMapper.readValue(result, clazz);
			}
			return null;
		} catch (Exception ew) {
			ew.printStackTrace();
			return null;
		}
	}

	/**
	 * 从json文件中解析json串并转换成java类型
	 * 
	 * @param name
	 * @param clazz
	 * @return
	 */
	public static <T> T createFromJsonFile(String name, Class<T> clazz) {
		try {
			String sqlFlie = readFile(name);
			String result = sqlFlie;
			if (StringUtils.isNotBlank(result)) {
				ObjectMapper objectMapper = JSONMapper.getInstance();
				return (T) objectMapper.readValue(result, clazz);
			}
			return null;
		} catch (Exception ew) {
			ew.printStackTrace();
			return null;
		}
	}

	/**
	 * 序列化对象保存到文件中.
	 * 
	 * @param shoppingDto
	 * @param name
	 */
	public static void serializeObject(Object shoppingDto, String name) {
		ObjectOutputStream oo;
		try {
			oo = new ObjectOutputStream(new FileOutputStream(new File(name)));
			oo.writeObject(shoppingDto);
			System.out.println("对象序列化成功!");
			oo.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	/**
	 * 从文件中反序列化对象.
	 * 
	 * @param name
	 * @param clazz
	 * @return
	 */
	public static <T> T deserializeObject(String name, Class<T> clazz) {
		ObjectInputStream ois;
		try {
			ois = new ObjectInputStream(new FileInputStream(new File(name)));
			T person = (T) ois.readObject();
			System.out.println("对象反序列化成功!");
			return person;
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 解析对象为json串.
	 * 
	 * @param obj
	 * @return
	 */
	public static String toJsonStr(Object obj) {
		try {
			return JSONMapper.getInstance().writeValueAsString(obj);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 解析json字符串为java对象.
	 * 
	 * @param obj
	 * @param clazz
	 * @return
	 */
	public static <T> T parseJsonStr(String str, Class<T> clazz) {
		try {
			return (T) JSONMapper.getInstance().readValue(str, clazz);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 解析json字符串为java对象.
	 * 
	 * @param str
	 * @param clazz
	 * @return
	 */
	public static <T> T parseJsonStr(String str, TypeReference<T> clazz) {
		try {
			ObjectMapper objectMapper = JSONMapper.getInstance();
			objectMapper.configure(
					JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
			return objectMapper.readValue(str, clazz);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public static void main(String[] aegs) throws Exception {
		Long a = 1481694879609L; 
		System.out.println(DateUtils.parseDate(a, "yyyy-MM-dd"));;
//		Date d1 = DateUtils.parseDate("2016-12-11");
//		System.out.println(d1.getTime());
//		
//		Date d2 = DateUtils.parseDate("2016-12-13");
//		System.out.println(d2.getTime());
//		String inputStr = readFile("d:\\zipstr.txt");
//		String callRequestStr = ZipUnZipUtils.getInstance().unzipBase642String(inputStr,"UTF-8");
//		System.out.println(callRequestStr);
		 
//		System.out.println(System.currentTimeMillis());
//		FlightSearchResult<FlightSearchFlightInfoDto> goFlightSearchResult2 = MockUtil
//				.createFromJsonFile(
//						"d:\\new_flight.txt",
//						new TypeReference<FlightSearchResult<FlightSearchFlightInfoDto>>() {
//						});

		// String sqlFlie = readFile("d:\\老的查询往返程机票的东西.txt");
		// ObjectMapper objectMapper = JSONMapper.getInstance();
		// FlightSearchResult<FlightSearchFlightInfoDto> flightSearchResult =
		// objectMapper
		// .readValue(
		// sqlFlie,
		// new TypeReference<FlightSearchResult<FlightSearchFlightInfoDto>>() {
		// });
		// List<FlightSearchFlightInfoDto> result =
		// flightSearchResult.getResults();
		// for(FlightSearchFlightInfoDto d:result){
		// writeFile("d:\\"+System.currentTimeMillis()+".txt",
		// getJsonStr(d)+"\n\n\n" );
		// }
	}
}

 

3、解析json的时候,可能出现解析不了报错的情况,使用下面的jsonmap配置:

ObjectMapper objectMapper = JSONMapper.getInstance();
			objectMapper.configure(
					JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
			return objectMapper.readValue(str, clazz);

 

分享到:
评论

相关推荐

    WCF中应用泛型

    - **Teacher** 类同样继承自 `Person` 类,可能包含更多的教师特定属性(虽然在提供的代码片段中没有出现)。 ##### 3.2 数据模型代码示例 - **Person.cs** ```csharp using System.Runtime.Serialization; ...

    VT泛型集合字典根据预设键获取值

    在深入探讨“VT泛型集合字典根据预设键获取值”的知识点之前,我们先来理解一下几个核心概念。此段代码主要涉及了C#语言中的泛型、反射(Reflection)、属性信息(PropertyInfo)以及如何操作集合。下面将详细解析...

    C#中对继承、 类、虚拟、委托、事件、约束泛型等概念的运用

    本篇将详细介绍C#编程语言中几个核心概念的应用,包括继承、类、虚拟方法、委托、事件以及约束泛型等,并通过具体的代码示例来展示这些概念如何被用于实际编程中。 #### 类与继承 在面向对象编程中,类是基本的...

    开源项目-sirkon-snippets.zip

    在"Sirkon Snippets"这个开源项目中,你可以发现以下几个关键知识点: 1. **泛型的基本概念**:泛型允许开发者定义可参数化的类型,这些参数可以在使用时指定。例如,你可以创建一个可以处理任何整数类型的切片函数...

    Scratchpad:Scratchpad repo 推送各种代码片段

    在Scratchpad仓库中的Java代码片段,可能会涵盖以下几个方面的知识点: 1. **基础语法**:包括变量声明、数据类型(如整型、浮点型、字符串、布尔型)、流程控制(如if语句、for循环、while循环)、函数定义和调用...

    C#常用代码(个人收集)

    在C#中,常用的知识点包括但不限于以下几个方面: 1. **基础语法**:C#是一种类型安全的面向对象的语言,它支持类、接口、结构等面向对象特性。基础语法包括变量声明、数据类型(如int、string、bool等)、运算符、...

    倍福c++代码参考,有一点参考价值

    描述中说这不是一个完整的C++工程,而是提供了一些可以学习和借鉴的代码片段。这可能意味着这些代码文件包含了一些特定功能的实现,例如通信协议、数据处理、控制算法等,它们可以作为开发人员理解和学习如何在类似...

    Java-Snippets:Java的代码片段

    在Java编程中,有几个核心知识点是所有开发者都应掌握的: 1. **基础语法**:Java的基础语法包括变量定义、数据类型(如整型、浮点型、字符串、布尔型等)、运算符(算术、比较、逻辑、位操作等)、流程控制(如if...

    代码代码

    如果这是一个代码模板集合,那么它可能涵盖了不同场景下的常用代码片段,以帮助开发者提高效率。 在深入探讨这个主题时,我们可以关注以下几个知识点: 1. **源码分析**:源码是程序的原始形式,理解源码有助于...

    c#代码段(csharp snippets)收集

    这些代码片段通常包含了特定的功能实现,如数据处理、UI交互或者算法实现,能够显著提升开发效率。 在C#中,代码段可以是方法、函数、类或者是一些简短的语句集合,它们可以在不同的项目中复用,从而减少工作量。...

    开源项目-golang-proposal.zip

    2. **代码复用**:泛型允许创建可重用的代码片段,如数据结构(如堆、队列和集合)和算法,这些代码可以应用于各种类型,无需重复编写针对特定类型的版本。 3. **简洁性**:通过引入泛型,可以消除因处理多种类型而...

    java核心技术代码

    Java核心技术包括但不限于以下几个方面: 1. **基础语法**:这是所有编程语言的基础,Java也不例外。它涉及到变量声明、数据类型(如整型、浮点型、字符型和布尔型)、运算符、流程控制(如if语句、switch语句、...

    模板代码Hsssssssss.zip

    【模板代码Hsssssssss.zip】和【模板代码H.zip】这两个压缩包文件看起来是同一个项目的不同命名版本,它们可能包含了一些预先编写好的代码片段或者框架,供开发者在进行软件开发时作为基础来快速构建自己的应用。...

    C++几个小程序.rar

    描述中的“这里有些小程序,对些小的程序赛还是有帮助的,大家看看吧”暗示这些程序可能是为编程竞赛或学校项目设计的,可能是用于解决特定问题的简洁代码片段。这些小程序可能涵盖了数据结构、算法、数学应用等方面...

    c++经典代码大全

    C++的经典代码通常涉及以下几个方面: 1. 基础语法:C++的基础语法包括数据类型、变量声明、运算符、控制结构、函数等。新手入门者需要掌握这些基础知识,以便能够编写简单程序。 2. 指针与引用:C++中的指针和...

    片段

    9. **版本控制**:为了便于协作和追踪代码变更,`Snippet-main`很可能使用了版本控制系统如Git,每个代码片段都有其版本历史记录,方便回溯和比较。 10. **文档和注释**:良好的代码片段应该包含清晰的文档和注释,...

    Java代码收藏.rar

    这个收藏可能是一个程序员或教育者整理的精选Java代码片段,用于教学、研究或者个人项目参考。通过深入分析其中的代码,我们可以学习到Java语言的各种核心概念和技术。 在Java编程中,有几个重要的知识点是每个...

    c#如何只运行一个实例

    首先,我们来看一下提供的部分代码片段: ```csharp public static Process RunningInstance() { Process current = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName(current....

    2011最新整理java经典代码.zip

    文件 "2011最新整理java经典代码.doc" 可能是一个Microsoft Word文档,里面包含了精心编排的Java代码片段和相关的解释说明。 在Java编程中,经典代码通常涉及以下几个核心概念: 1. **基础语法**:包括数据类型...

    有用的代码段:代码段

    这些C#代码片段可能包括但不限于以下几个方面: 1. **异常处理**:如何优雅地捕获和处理运行时错误,以确保程序的稳定性和健壮性。 2. **LINQ查询**:利用C#的Language Integrated Query (LINQ)进行数据操作,提高...

Global site tag (gtag.js) - Google Analytics