The Reflect Part

The reflect part has many advantages.I heard that reflect is widely used in many frames.

In this part:

  1.Common method to get Class object:

    a)Class clazz = Class.forName(Qualified Name);

    b)Class clazz = Person.getClass();

    c)Class clazz = Person.class;

  2.Get the method:

    a)Method[] methods = clazz.getDeclaredMethods();

    b)Method method = clazz.getDeclaredMethod(method‘s name, parameters‘ class);

  3.Get the constructor:

    a)Constructor[] cons = clazz.getDeclaredConstructors();

    b)Constructor con = clazz.getDeclaredConstructor(parameters‘ class);

  4.Get the object:

    a)Person person = (Person) clazz.newInstance();

    b)Person person = (Person) constructor.newInstrance(parameters);

  5.Call the method:

    method.invoke(object,parameters);

What‘s going on when use the reflect?

  1.Load the person.class

  2.Create space in the heap memory

  3.Initialize the fields of this object

  4.Display the initialization

  5.Initialize the constructor

If you can use config file to configure the interface or class path, the code‘s extension will be very convenient.

For exmaple:

  If these is a file called config.txt. And the config.txt include the class or interface‘s path from the first line.

  main{

  BufferedReader reader = new BufferedReader(new FileReader(config file path));

  String line = reader.readLine();

  Class clazz = Class.forName(line);

  MyInterface mi = (MyInterface) clazz.newInstance();

  mi.test();

  }

If you want to use another Class object you can modify the config.txt , that is not a bad choice.

时间: 2024-11-07 07:45:11

The Reflect Part的相关文章

java.lang.reflect操作对象属性(域)的值

import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /*2015-10-28*/ public class RefactorDemo { /** * @param args * @throws NoSuchFieldException * @throws SecurityException * @throws Ill

Reflect

Reflect 反射是引起SI的一个最基本因素,信号在传输线传播过程中,一旦它所感受到的传输线瞬时阻抗发生变化,那么就必将有发射发生. 反射是由于传输线瞬时阻抗变化而引起的 下面就从理论角度来分析一下反射的机理.反射系数和传输系数的计算 配个简易图来加以说明 图中褐色的为电路板上的大面积铺铜层(GND或者PWR),它是信号的返回路径.绿色和红色是传输线,S1比较宽,S2较窄,很明显在S1和S2的交接处出现了阻抗不连续,根据阻抗计算公式应该是Rs1<Rs2.那么信号传输到这里的时候,从反射的定义来

js-ES6学习笔记-Reflect

1.Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API.Reflect对象的设计目的有这样几个. 将Object对象的一些明显属于语言内部的方法(比如Object.defineProperty),放到Reflect对象上. 修改某些Object方法的返回结果,让其变得更合理.比如,Object.defineProperty(obj, name, desc)在无法定义属性时,会抛出一个错误,而Reflect.defineProperty(obj, name, de

Swift缩水版MJExtension - Reflect的基本使用

github:https://github.com/CharlinFeng/Reflect 直接拖拽Reflect文件夹到您的项目中即可,无任何第三方依赖!文件夹结构说明:.Coding 归档相关.Reflect 反射核心包.Dict2Model 字典转模型.Model2Dict 模型转字典 这里使用plist作为数据源, plist存储的是一个数组, 数组中存储的是字典 plist的结构如下: 将plist数组中的每一个字典转换为模型, 代码如下: RPTableViewController.

自己写一个java.lang.reflect.Proxy代理的实现

前言 Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的.本文就自己写一个Proxy类出来,功能和java.lang.reflect.Proxy一样,传入接口.代理内容,生成代理. 抛砖引玉吧,个人觉得自己写一些JDK里面的那些类挺好的,写一遍和看一遍真的是两个不同的概念,写一遍既加深了对于这些类的理解.提升了自己的写代码水平,也可以在写完之后对比一下自己的实现有哪些写得不好

利用java.lang.reflect.Constructor动态实例化对象

1 public class Student { 2     private String name; 3     private Integer age; 4     private Student(String name,Integer age){ 5         this.name=name; 6         this.age=age; 7     } 8     public String getName() { 9         return name;10     }11 

关于java reflect

反射的基石 Class类 对比提问: Person类代表人,它的实例对象就是张三,李四这样一个个具体的人, Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class.对比提问:众多的人用一个什么类表示?众多的Java类用一个什么类表示? 人 Person Java类 Class Class类代表Java类,它的各个实例对象又分别对应什么呢? 对应各个类在内存中的字节码,例如,Person类的字节码,ArrayList类的字节码,等等. 一个类被类加载器加载到内存中,

Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWo

1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help | start | stop } 2014-7-12 14:19:28 org.apache.catalina.core.AprLifecycleListener init 信息: Loaded APR based Apache Tomcat Native library 1.1.29 using

sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class异常解决方法

package com.wzs; import java.lang.reflect.ParameterizedType; public class T1<T> {     private Class classt;     public T1() {         ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();         this.classt = (Class)

GO_09:GO语言基础之reflect反射

反射reflection 1. 反射可以大大的提高程序的灵活性,使得 interface{} 有更大的发挥余地 2. 反射使用 TypeOf 和 ValueOf 函数从接口中获取目标对象信息 3. 反射会将匿名字段作为独立字段(匿名字段本质) 4. 想要利用反射修改对象状态,前提是 interface.data 是 settable,即 pointer-interface 5. 通过反射可以"动态"调用方法 示例一: 举例说明反射使用 TypeOf 和 ValueOf 来取得传入类型的