`
reginaminlee
  • 浏览: 33657 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

java 反射 使用小技巧

 
阅读更多

经常要读取txt或者excel到数据库

以前都是读取后然后转成list,然后set到表对象(hibernate映射的表对象),

然后再session.save(entity),

如果文件中的title很多的话,就太麻烦了。

 

 

现在用java 反射,可以轻松解决

 

ClubWinterActivity是表对象,new String[]{}中是txt中的title,就是说取这些值,放入表对象的这些字段:

Java代码 复制代码 收藏代码
  1. List<ClubWinterActivity> list = (List<ClubWinterActivity>) ParserTxtFileUtils   
  2.                 .getListByFile(file, ClubWinterActivity.classnew String[] {   
  3.                         "cwatype""cwatimes""cwacustomername""cwavin","flag"});  
List<ClubWinterActivity> list = (List<ClubWinterActivity>) ParserTxtFileUtils
				.getListByFile(file, ClubWinterActivity.class, new String[] {
						"cwatype", "cwatimes", "cwacustomername", "cwavin","flag"});

 

 

读取每行txt,放入getObject()中

Java代码 复制代码 收藏代码
  1. public static List<?> getListByFile(File file, Class<?> clazz, String[] fieldNames) throws Exception {   
  2.         List<Object> list = new ArrayList<Object>();   
  3.         InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GB2312");   
  4.         BufferedReader br = new BufferedReader(isr);   
  5.         String line = null;   
  6.         while (null != (line = br.readLine())) {   
  7.             Object o = getObject(line, clazz, fieldNames);   
  8.             if(null != o)   
  9.                 list.add(o);   
  10.         }   
  11.         return list;   
  12.     }  
public static List<?> getListByFile(File file, Class<?> clazz, String[] fieldNames) throws Exception {
		List<Object> list = new ArrayList<Object>();
		InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GB2312");
		BufferedReader br = new BufferedReader(isr);
		String line = null;
		while (null != (line = br.readLine())) {
			Object o = getObject(line, clazz, fieldNames);
			if(null != o)
				list.add(o);
		}
		return list;
	}

 

 

Java代码 复制代码 收藏代码
  1. private static Object getObject(String line, Class<?> clazz,   
  2.             String[] fieldNames) throws Exception {   
  3.         Object o = null;   
  4.         if (!"".equals(line)) {   
  5.             o = clazz.newInstance();   
  6.             String[] values = line.split(",");   
  7.             setObjectFieldsValue(o, values, fieldNames);   
  8.         }   
  9.         return o;   
  10.     }  
private static Object getObject(String line, Class<?> clazz,
			String[] fieldNames) throws Exception {
		Object o = null;
		if (!"".equals(line)) {
			o = clazz.newInstance();
			String[] values = line.split(",");
			setObjectFieldsValue(o, values, fieldNames);
		}
		return o;
	}

 

把值set到o中

Java代码 复制代码 收藏代码
  1. private static void setObjectFieldsValue(Object o, String[] values,   
  2.             String[] fieldNames) throws Exception {   
  3.         if (null != values && values.length > -1) {   
  4.             for (int i = 0; i < fieldNames.length; i++) {   
  5.                 Field field = o.getClass().getDeclaredField(fieldNames[i]);   
  6.                 field.setAccessible(true);   
  7.                 String typeName = field.getType().getSimpleName();   
  8.                 if ("Long".equals(typeName) || "long".equals(typeName))   
  9.                     field.set(o, Long.parseLong(values[i]));   
  10.                 else if ("Date".equals(typeName))   
  11.                     field.set(o, DateUtils.getDateByFormat(values[i],   
  12.                             Constants.DATEFORMAT1));   
  13.                 else if ("Integer".equals(typeName) || "int".equals(typeName))   
  14.                     field.set(o, Integer.parseInt(values[i]));   
  15.                 else if ("Double".equals(typeName) || "double".equals(typeName))   
  16.                     field.set(o, Double.parseDouble(values[i]));   
  17.                 else if ("Float".equals(typeName) || "float".equals(typeName))   
  18.                     field.set(o, Float.parseFloat(values[i]));   
  19.                 else if ("Boolean".equals(typeName)   
  20.                         || "boolean".equals(typeName))   
  21.                     field.set(o, Boolean.parseBoolean(values[i]));   
  22.                 else  
  23.                     field.set(o, values[i]);   
  24.             }   
  25.         }   
  26.     }  
分享到:
评论

相关推荐

    JAVA小技巧

    - **反射与动态代理**:掌握Java反射API的使用,以及如何实现动态代理。 7. **代码优化:** - **代码规范**:遵循良好的命名规则,避免魔法数字和硬编码,以及编写清晰的注释。 - **性能优化**:了解CPU缓存和...

    java编程小技巧共享

    在Java编程领域,掌握一些实用的小技巧能够极大地提高开发效率和代码质量。下面将详细探讨这些"java编程小技巧共享"中的关键知识点。 1. **注释规范**:良好的注释是代码可读性的保障。使用Javadoc为类、方法添加...

    vc和java编程小技巧锦集

    这篇文档集合了VC和Java编程的一些小技巧,旨在帮助开发者提高效率,解决实际问题。以下是对这些小技巧的详细解读: 1. **VC++编程技巧**: - **内存管理**:VC++中,理解智能指针如`shared_ptr`和`unique_ptr`的...

    JAVA-提高反射效率

    Java反射API主要由`java.lang.Class`、`java.lang.reflect.Method`、`java.lang.reflect.Field`等类组成。通过这些类,我们可以获取类的信息,实例化对象,以及动态调用方法和访问字段。 1. **缓存Class对象**:...

    Java习惯用法总结编程小技巧共14页.pdf.zip

    这份"Java习惯用法总结编程小技巧共14页.pdf"压缩文件,显然是为了帮助开发者提升编程效率,减少错误,并掌握Java的一些最佳实践。以下是根据标题和描述提炼出的一些关键知识点: 1. **代码风格与格式**:良好的...

    用Java做的小程序

    9. **反射**:如果程序具有动态加载类或调用方法的能力,可能使用了Java的反射机制。 【学习与实践】 对于初学者,理解并掌握Java语言的基本概念是至关重要的。可以通过阅读Java官方文档,参加在线课程或购买相关...

    Java Reflection in Action

    Java反射机制是一种在运行时查询、监视和操作类、方法、字段和对象的机制,其提供了一种强大的编程能力,允许程序在运行时进行自我检查和调整行为。Java Reflection in Action这本书作为Java反射机制的经典之作,...

    经典java小程序源代码合集

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、健壮性和高效性而闻名。...通过阅读和实践这些代码,你可以逐步掌握Java编程的基础知识和技巧,从而深化对Java的理解,为成为一名合格的Java开发者打下坚实基础。

    java 解析xml类映射数据库 数据库操作 反射机制 源码

    总的来说,这个程序集涉及了Java对XML的解析,XML到数据库的映射,以及使用反射进行动态操作的技巧,这些都是Java开发中的核心技能,对于理解Java应用程序的内部工作原理以及提高代码的灵活性和可维护性具有重要意义...

    Java常见错误列表Java开发Java经验技巧共20页

    这份"Java常见错误列表Java开发Java经验技巧共20页"的资料旨在帮助初学者和有经验的开发者更好地理解和解决这些问题,提高编程效率。以下是对这份资源中可能包含的关键知识点的详细阐述: 1. **错误类型与分类**: ...

    200个java初学者必看的小程序

    "200个Java初学者必看的小程序"这个压缩包,显然是一个精心整理的学习资料集合,旨在帮助新手逐步理解并掌握Java编程的基础和实践技巧。 1. **基础语法**:Java的基本语法包括变量、数据类型、运算符、控制结构(如...

    java面试题与技巧

    Java面试是每位Java开发者职业生涯中的重要关卡,它不仅测试技术实力,还考察问题解决能力、团队合作精神以及沟通技巧。以下将详细解析Java面试中常见的知识点,帮助求职者做好充分准备。 一、基础概念 1. Java语言...

    Java源代码小Demo

    在Java编程世界里,"Java源代码小Demo"是一份宝贵的学习资源,它包含了多个精心设计的小型示例项目,旨在帮助初学者快速理解和掌握Java编程的基础知识。这些示例通常涵盖了一些基本概念、语法结构以及常用API的使用...

    java小程序集锦

    通过研究“Java小程序集锦”,开发者不仅能巩固基础,还能了解如何将Java的特性应用于实际问题中,提升编程技巧和解决问题的能力。这些小程序就像一个个微缩的实战项目,对于学习和教学Java语言都极具价值。

    计算java对象的大小的方法

    在Java编程语言中,了解一个对象的大小是重要的性能优化技巧之一。这涉及到内存管理和垃圾回收的细节。本文将深入探讨如何计算Java对象的大小,以及这个知识点在实际开发中的应用。 首先,Java对象的大小不仅仅包括...

    java小例子

    13. **反射**:Java反射API允许在运行时检查类、接口、字段和方法的信息,甚至动态调用方法和访问字段。 14. **注解(Annotation)**:注解是一种元数据,可以为编译器或JVM提供有关代码的附加信息,例子可能涉及...

    java 小程序带源码

    在这个“java小程序带源码”的资源中,初学者将有机会深入理解Java编程的基本概念和实践技巧。 首先,Java语言是面向对象的,它的核心特性包括封装、继承和多态。在源码中,你可以看到类(class)的定义,这是Java...

    Java程序设计技巧1001例

    Java程序设计技巧1001例是一本专为Java初学者和进阶者设计的教程,旨在通过大量的实例,帮助读者深入理解并熟练运用Java语言。这本书覆盖了从基础语法到高级特性的广泛主题,旨在提升读者在实际编程中的技能和效率。...

Global site tag (gtag.js) - Google Analytics