一:实现 1.Base类的实现 package me.silentdoer.reflecsuper; /** * @author silentdoer * @version 1.0 * @description the description * @date 4/29/18 10:19 AM */ public class Base { public String show(long num){ System.out.println("Base" + num); return &quo…
一.原理: 1.做一个field注解,注解有两个参数:是否必填.toString之后的最大长度 2.对某个request类(或基类),使用注解标记某个字段的校验详情 3.通用的static方法,利用反射获取属性的值,并做校验.不通过则抛出特定的异常 二.上代码: 异常类: package com.test; /** * 基础异常 * @author zyydd * @date 2019/1/24 10:33 * @version 1.0.0 **/ public class BaseExcept…
1.为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程. import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import…
java利用反射机制 可以动态调用某个类的某个方法,在 扩展系统功能或提供对外接口时经常用的到. 代码如下: 打印类Print.java package com.test.reflct; /** * 打印类 * * @date 2015-8-12 下午2:18:42 */ public class Print { public static void print(String str){ System.out.println("打印测试"+str); } } 调用类Test.java:…
项目中需要java后台查询并组装前台grid的数据,数据行数不定,数据行定义不定,开始用了最原始的方法,写了几百行,就是前台需要什么字段后台拼接什么字段,java代码冗余量非常大,并且不够灵活,一旦前台页面需要调整字段顺序或者增加一个字段.删除一个字段时,后台需要修改java代码.经过一上午的重构努力,改为数据库配置字段与字段对应方法,java利用反射动态调用对象方法从而获取字段值,拼接为list传递给前台.这样修改后,代码干净整洁,非常灵活,只要是对象中存在的方法,可以在数据库中任意配置显示与…
下面是一个比较简单的通过JAVA的反射机制调用已知方法的例子 package com.togeek.mvntest; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * @author togeek 利用反射调用方法 * @address http://www.cnblogs.com/togeek/ * @Date: 2015年11月29日18:01:31 */ pu…
在使用Java 反射时,对方法的调用,可能碰到最多的问题是,方法的变量如何使用.其实,调用方法的变量全部在参数数组里,不管有多少个参数,你都要把它放在参数数组里,如果是单个非数组参数,则可不使用参数数组. 如一个类中main方法的参数为String[] args,则在Java reflect中调用时,需要放在new Object[]{}中. /** * 调用非当前路径下的类 */ public void classLoadTest2(){ try { URL[] urls = new URL[]…
java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.hibernate.Criteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Rest…
Java利用反射机制访问私有化构造器 博客分类: java   我们都知道,当一个类的构造方法被设为私有的时候(private),在其他类中是无法用new来实例化一个对象的. 但是有一种方法可以把带有私有构造器的类实例化出对象. 在java的反射机制中,可以通过Class.forName(类名).newInstance()来实例化一个对象,还可以获取类的所有方法和构造方法. Constructor这个类,表示类构造器,即构造方法.在生成类对象的时候,会调用构造方法. //例子程序 import …
模拟一个场景: 众所周知,EasyExcel导出Excel文档是依赖于注解完成的,在实体类需要导出的属性上面加上注解,导出的时候会自动识别该属性. 假如我们现在需要导出用户的信息,又不想污染原本的实体类,又要过滤掉password这个属性.那么我们可以另外创建一个实体类,不包含password属性.然后我们将查到的用户信息,赋值给新创建的对象即可. 赋值这一步是比较繁琐的,我们需要写循环,然后判断,然后赋值.等将来需要导出管理员信息的时候我们又要写循环,然后判断,然后赋值... 怎么能写一个共用…
前言: 不同开发语言之间具有通用性,更具有协作调用的可能.有时候对于一些场景会有调用js的需求,因此下面展示了一个java利用自身JDK调用js函数的demo,供感兴趣的朋友参考. js函数文件 expression.js function merge(a, b) { c = a * b; return c; } function isPrime (num) { if (num <= 1) { print("Please enter a positive integer >= 2.&…
首先说下反射是什么?反射是Sun公司推出的一组API,此组API位于Java.lang.reflect中 反射的作用是编写工具(例如eclipse),编写框架,当然对于一般的程序,我们不可能用反射来做这些事,一般反射大多是用于在构建类的实例以及调用类方法及属性. ok! 了解了反射是什么以及反射的应用领域,那么就来看看Java中是怎么实现反射的吧 Student类 public class Student { public String name; public String gender; p…
最近由于业务要求,需要动态调用DLL类库,所以研究了一下,感觉还好也不太难,今天就把自己理解的写了一个小例子(已经通过VS2005跑通),供大家一起研究和探讨,有理解不当的地方还请高手们多多指正,谢谢啦! 好,在这之前我先把反射所需要使用的几个类给大家列一下: 1.使用Assembly类定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例. 2.使用MethodInfo了解方法的名称.返回类型.参数.访问修饰符(如pulic 或private)和实现详细信息(…
在Spring中,我们可以通过 @Autowired注解的方式为一个方法中注入参数,那么这种方法背后到底发生了什么呢,这篇文章将讲述如何用Java的注解和反射实现一个“低配版”的依赖注入. 下面是我们要做的一些事情: 通过 @interface的方式定义一个注解 为某个希望杯被注入的方法添加这个注解 编写测试代码,通过反射获取添加了注解的方法对应的Method对象,将该方法对象设置为可访问的,通过反射创建对象并调用这个方法,同时注入依赖数据 如上所述,我们分为三个步骤, 去加工出这个低配版的依赖…
项目的权限分配,采用的是RBAC的设计模式.后台配置权限的时候,需要获取到所有的权限因子. 不经让我想起YII框架的SRBAC模块,还有以前的一个ecshop改造系统的权限配置方式,都采用的是PHP的反射机制. 于是把PHP项目的经验带到JAVA项目中,发现PHP中的经验在java中,实现起来不是那么的方便. 这主要的原因:一是语言上的特性导致权限控制方面的差异性. 二是项目使用的是SSH框架,action的名称已经使用注解替换了原有名称.使用反射获取到的类名和方法名组合,不是有效的权限因子(当…
1.java利用反射机制判断对象的属性是否为空: Map<String,String> validateMap = new LinkedHashMap<String, String>(); validateMap.put("serial", "编号");validateMap.put("major", "专业"); public static <T> String validateFiled…
package net.xsoftlab.baike; import java.lang.reflect.Method; public class TestReflect {     public static void main(String[] args) throws Exception {         Class<?> clazz = Class.forName("net.xsoftlab.baike.TestReflect");         // 调用Te…
对于符合JAVA Bean规范的bean,调用其方法应优先使用java.beans.PropertyDescriptor获取Method进行方法调用,以获得更大的可维护性. public void gridColumnFilter(List<?> list, Map<String, Object> dataMap){    for (Iterator<?> iterator = list.iterator(); iterator.hasNext();) { Object…
IEnumerable<T>的使用 创建一个IEnumerable对象 List<string> fruits = new List<string> { "apple", "pear", "banana", "orange" }; IEnumerable<string> f = fruits as IEnumerable<string>; 获取的迭代器一开始指向为空…
用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): publicobject InvokeMember(    string name,    BindingFlags invokeAttr,    Binder binder,    object target,    object[] args ); 参数 name  String,它包含要调用的构造函数.方法.属性或字段成员的名称. - 或 - 空字符串(""),表示调…
对于符合JAVA Bean规范的bean,调用其方法应优先使用java.beans.PropertyDescriptor获取Method进行方法调用,以获得更大的可维护性. 示比例如以下: NonCopyLogEntity ncl = new NonCopyLogEntity(); for (int i = 0; i < st.length; i++) { String fieldName = NonCopyLogEntity.fieldPosMap.get(i + 1); PropertyDe…
一直以来反射都是只闻其声,却无法将之使用,近日尽心下来学习下,发现了很多精妙之处. Java动态装载和反射技术 一.类的动态装载 1.Java代码编译和执行的整个过程包含了以下三个重要的机制: ● Java源码编译机制:得到Class字节码 ● 类加载机制:包括类的装载,连接,初始化三个阶段 ● 类执行机制 2.类加载机制分为装载,连接,初始化三个阶段 (1)装载阶段:类装载器(ClassLoader) 把编译形成的class文件载入内存,创建类相关的java.lang.Class对象,这个Cl…
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Java学习:注解,反射,动态编译 Annotation 注解  什么是注解 ? Annotation是从JDK5.0开始引入的新技术 . Annotation的作用 : 不是程序本身 , 可以对程序作出解释.(这一点和注释没什么区别) 可以被其他程序(比如:编译器等)读取.(注解信息处理流程,是注解和注释的重大区别.如果没有注解信息处理流程,则注解毫无意义) Annotation的格式 :…
1反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 2反射机制能做什么 反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类: 在运行时构造任意一个类的对象: 在运行时判断任意一个类所具有的成员变量和方法: 在运行时调用任意一个对象的方法: 生成动态代理. 3反射机制的相关API 通过一个对象获得完整的包名和类名 pac…
为前期学习过反射,再这里再次复习总结下:[转载请说明来源:http://www.cnblogs.com/pony1223/p/7659210.html ] 一.透彻分析反射的基础_Class类 Class是一个类,他代表一类事物,它代表一类什么样的事物呢? Java 程序中的各个java类属于同一类事物,描述这类事物的java类名就是Class. 思考:众多的人可以用一个什么类表示? Person众多的类用一个什么类来表示?    答案是Class 我们知道Person代表一个人,一个人有他的身…
Java提升篇之反射的原理 1.构造方法的反射 import java.lang.reflect.Constructor; public class ReflectConstructor { public static void main(String[] args) throws Exception { Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.cla…
本节主要介绍Java反射的原理,使用方法以及相关的技术细节,并且介绍了关于Class类,注解等内容. 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 文章首发于我的个人博客: https://h2pl.github.io/2018/05/01/javase13 更多关于Java后端学习的内容请到我的CSDN博客上查看: https://blog.csdn.net/a724888 回顾:什么是反射? 反射(Reflection)是Java 程序开…
[Keywords]:Java,Hibernate,虚拟机,框架,SQL [Abstract]:   反射的概念:所谓的反射就是java语言在运行时拥有一项自观的能力,反射使您的程序代码能够得到装载到JVM中的类的内部信息,允许您执行程序时才得到需要类的内部信息,而不是在编写代码的时候就必须要知道所需类的内部信息,这使反射成为构建灵活的应用的主要工具. 反射的常用类和函数:Java反射机制的实现要借助于4个类:Class,Constructor,Field,Method:其中class代表的是类…
什么是泛型? 泛型,即“参数化类型”.顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参). 为什么要使用泛型? 先看如下代码: public class GenericTest { public static void main(String[] args) { List list = new ArrayList(); list.add("qqyumidi"); list.a…
package com.bjsxt.reflection.test.bean; public class User { private int id; private int age; private String uname; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getAge() { return age; } public void setAge(in…