package main.java.reflection.model; import java.util.ArrayList; import java.util.List; public class Demo { private String id; private String name; private int age; private List<String> list = new ArrayList<String>(); public Demo(){} public Demo(String id, String name, int age, List<String> list) { super(); this.id = id; this.name = name; this.age = age; this.list = list; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public List<String> getList() { return list; } public void setList(List<String> list) { this.list = list; } @Override public String toString() { return "[id="+id+";name="+name+";age="+age+"]"; } }
package main.java.reflection; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.List; import main.java.reflection.model.Demo; public class TestDemo { public static void main(String[] args) throws Exception { TestDemo td = new TestDemo(); td.test(); td.testField(); td.testMethodSet(); td.testMethodGet(); td.test2(); td.test4(); } /** * Title:test * Description:范型基础 */ public void test() { Demo d= new Demo(); System.out.println(d.getClass().getName()); System.out.println("count of Demo's constructor:"+d.getClass().getConstructors().length); for (Constructor<?> c : d.getClass().getDeclaredConstructors()) { System.out.println(c); } System.out.println("所以方法:"); for (Method m: d.getClass().getMethods()) { //所以的方法(包括继承过来的) System.out.println(m.getName()); } System.out.println("自定义的方法:"); for (Method m: d.getClass().getDeclaredMethods()) { //自定义的方法 System.out.println(m.getName()); } System.out.println("属性:"); for (Field f : d.getClass().getDeclaredFields()) { if(f.getType().toString().endsWith("java.lang.String")){ System.out.println("..."+f.getType()+":"+Modifier.toString(f.getModifiers())); }; System.out.println(f.getName()+":"+f.getType().getSimpleName()+"("+f.getType()+")"); } } /** * Title:testField * Description:属性赋值 */ public void testField() throws Exception { Class<?> demo = Class.forName("main.java.reflection.model.Demo"); Object obj = demo.newInstance(); Field field = demo.getDeclaredField("name"); field.setAccessible(true); field.set(obj, "xiao"); System.out.println(field.get(obj)); } /** * Title:testMethodSet * Description:利用反射执行对象的set方法 */ public void testMethodSet() throws Exception { Class<?> demo = Class.forName("main.java.reflection.model.Demo"); Demo obj = (Demo) demo.newInstance(); Method m = demo.getMethod("setId",String.class); m.invoke(obj, "11"); System.out.println(obj.getId()); } /** * Title:testMethodGet * Description:利用反射执行对象的get方法 */ public void testMethodGet() throws Exception { Class<?> demo = Class.forName("main.java.reflection.model.Demo"); Demo obj = (Demo) demo.newInstance(); Method m = demo.getMethod("getId"); if(m.invoke(obj)== null); System.out.println("...."); } /** * Title:test2 * Description:将对象中为String类型的属性对应的数据全部去掉首尾空格 */ public void test2() throws Exception{ List<Demo> dList = new ArrayList<Demo>(); List<String> strList = new ArrayList<String>(); dList.add(new Demo(" 1 "," Java ",11,strList)); dList.add(new Demo("2 "," Ruby",22,strList)); dList.add(new Demo(" 3","Ada ",33,strList)); for (Demo demo : dList) { System.out.println(demo.toString()); } for (Demo demo : dList) { Method m = null; String tmp = ""; for (Field f : demo.getClass().getDeclaredFields()) { if(f.getType().toString().endsWith("java.lang.String")){ m = demo.getClass().getMethod("get"+f.getName().substring(0,1).toUpperCase()+f.getName().substring(1)); if(m.invoke(demo) != null) tmp = m.invoke(demo).toString(); else tmp = ""; m = demo.getClass().getMethod("set"+f.getName().substring(0,1).toUpperCase()+f.getName().substring(1),String.class); m.invoke(demo, tmp.trim()); }; } } for (Demo demo : dList) { System.out.println(demo.toString()); } } /** * Title:test4 * Description:使用范型将对象中为String类型的属性对应的数据全部去掉首尾空格 */ public void test4() throws Exception{ CommonBean<Demo> cb = new CommonBean<Demo>(); List<CommonBean<Demo>> dList = new ArrayList<CommonBean<Demo>>(); List<String> strList = new ArrayList<String>(); dList.add(new CommonBean<Demo>(new Demo(" 1 "," Java ",11,strList))); dList.add(new CommonBean<Demo>(new Demo("2 ",null,22,strList))); dList.add(new CommonBean<Demo>(new Demo(" 3","Ada ",33,strList))); dList = cb.getListOfStringTrim(dList); for (CommonBean<Demo> cm : dList) { System.out.println(cm.getObj().toString()); } } }
package main.java.reflection; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.List; public class CommonBean<T> { T obj; public CommonBean(){ } public CommonBean(T obj) { this.obj = obj; } public T getObj() { return obj; } public void setObj(T obj) { this.obj = obj; } public List<CommonBean<T>> getListOfStringTrim(List<CommonBean<T>> list) throws Exception{ T obj = null; for (CommonBean<T> cm : list) { obj = cm.getObj(); Method m = null; String tmp = ""; for (Field f : obj.getClass().getDeclaredFields()) { if(f.getType().toString().endsWith("java.lang.String")){ m = obj.getClass().getMethod("get"+f.getName().substring(0,1).toUpperCase()+f.getName().substring(1)); if(m.invoke(obj) != null) tmp = m.invoke(obj).toString(); else tmp = ""; m = obj.getClass().getMethod("set"+f.getName().substring(0,1).toUpperCase()+f.getName().substring(1),String.class); m.invoke(obj, tmp.trim()); }; } } return list; } }
相关推荐
此外,我们还需要学习Java的反射机制,它允许我们在运行时检查和修改类、接口、字段和方法。再者,JNI(Java Native Interface)允许Java代码调用C或C++原生代码,这在需要高性能计算或者集成已有的原生库时非常有用...
以下是一些Java初级学习中的关键知识点: 1. **基础语法**:Java的基础包括变量、数据类型(如整型、浮点型、字符型、布尔型)、运算符(算术、比较、逻辑、位操作等)以及流程控制(if-else语句、switch-case、for...
这份"java 初级学习资料PDF"包含的四个部分——SE2、OOP、Core、SE1,分别对应了Java的不同核心概念和技术。 1. **SE1(Java Standard Edition 1)**:这是对Java初学者的基础部分,主要涵盖了Java语言的基本语法,...
这份"java初级学习资料.zip"压缩包显然是为初学者准备的,旨在帮助他们掌握Java编程的基础。以下是一些核心的Java学习知识点,涵盖了这个阶段通常会接触到的内容: 1. **Java语法基础**:学习任何编程语言,首先...
以下是一些常见的Java初级学习问题及其详细解释: 1. **基础语法** - 变量声明:理解变量的类型、作用域以及何时使用final关键字。 - 运算符:熟悉基本的算术、比较和逻辑运算符,以及三元运算符的使用。 - 控制...
6. **反射与注解**:学习Java的反射机制,能动态地获取类信息和调用方法,以及注解的使用,理解其在元编程中的应用。 7. **Java集合框架的高级特性和设计模式**:深入研究Set、Map接口的实现类,如TreeSet、TreeMap...
Java的类库非常丰富,包括用于日期时间操作的java.time包,用于数学运算的java.math包,以及用于反射、并发、XML处理等的其他包。 十二、JDBC与数据库连接 Java Database Connectivity(JDBC)是Java访问数据库的...
2. **环境配置**:学习Java的第一步通常是安装Java Development Kit (JDK),并设置好环境变量,包括JAVA_HOME、PATH和CLASSPATH,确保系统能够找到Java编译器和运行时环境。 3. ** HelloWorld程序**:每个编程学习...
Java作为一门广泛使用的编程语言,其初级面试题涵盖了基础语法、面向对象特性、集合框架、异常处理、IO流、多线程、网络编程等多个方面。以下是对这些知识点的详细阐述: 1. **基础语法**:Java的基础语法包括变量...
这份压缩包文件包含三个文档:`Java面试初级.doc`、`Java面试中级.doc`和`Java面试高级.doc`,分别针对不同阶段的Java学习者和求职者,提供了精心整理的面试题目及答案,旨在帮助大家系统地复习和准备面试。...
Java初级工程师面试题合集是为那些准备踏入Java软件开发领域的求职者量身打造的一份宝贵的资源。这个最新的版本包含了自...通过深入学习并实践这些知识点,Java初级工程师将能够更好地应对面试挑战,提升自己的竞争力。
"Java初级150例"是一个专门为初学者设计的学习资源,它包含了一系列精心挑选的源代码实例,旨在帮助新接触Java的人快速掌握编程基础。在这个压缩包中,你可能会找到以下关键知识点: 1. **基础语法**:包括变量声明...
首先,Java初级阶段的学习通常包括以下内容: 1. **Java基础知识**:理解Java的基本语法,如变量、数据类型、运算符、流程控制语句(if、for、while)、函数等。 2. **面向对象编程**:掌握类、对象、封装、继承和...
这份“Java SE基础、初级、高级阶段”学习资料旨在帮助你全面掌握Java编程技术,从入门到精通。让我们逐一探讨这些阶段所涵盖的知识点。 **基础阶段:** 1. **Java环境配置**:安装JDK(Java Development Kit),...
2. **Java中级部分教材**:在掌握了基础知识后,中级教材会涉及更深入的主题,如封装、继承、多态等面向对象特性,异常处理,集合框架(List、Set、Map),IO流,线程,以及反射等。这些内容是JAVA开发者日常工作中...
作为初级学习者,理解Java的基础概念和语法是至关重要的。本源码集合针对Java初学者,旨在通过实际代码示例来帮助理解Java编程的核心知识。 1. **基础语法**: Java的语法与C++相似,但更注重安全性和面向对象特性...
在Java编程的初级阶段,学习者会接触到许多基础知识,这些知识是构建强大应用程序的基础。以下是对标题“JAVA初级教学笔记”和描述中涉及知识点的详细阐述: 1. **基础语法**: Java是一种面向对象的语言,学习者...
* 注解和反射:了解Java的注解和反射机制 * JUC编程:了解Java的并发编程 * JVM:了解Java虚拟机的工作原理和参数配置 二、JavaWeb JavaWeb是基于Java的Web开发技术,包括以下知识点: * MySQL初级:了解MySQL的...
这份“JAVA初级PPT资料”提供了一个全面的学习平台,适合初学者掌握Java的基础知识。以下是一些核心的Java知识点: 1. **Java语言简介**:Java是由Sun Microsystems(现已被Oracle收购)开发的,它的设计目标是简洁...
Java 后端初级面试题 在这篇文章中,我们将讨论 Java 后端开发中一些常见的面试题目,涵盖了 Java 基础知识、Java 面向对象编程、Java 集合框架、Java 多线程编程等方面。 一、JDK/JRE/JVM 的区别 JDK(Java ...