package com.test;

 public class Car {

     private String brand;
private String color;
private int maxSpeed; public Car(){} public Car(String brand, String color, int maxSpeed) {
super();
this.brand = brand;
this.color = color;
this.maxSpeed = maxSpeed;
} public String getBrand() {
return brand;
} public void setBrand(String brand) {
this.brand = brand;
} public String getColor() {
return color;
} public void setColor(String color) {
this.color = color;
} public int getMaxSpeed() {
return maxSpeed;
} public void setMaxSpeed(int maxSpeed) {
this.maxSpeed = maxSpeed;
} @Override
public String toString() {
return "Car [brand=" + brand + ", color=" + color + ", maxSpeed="
+ maxSpeed + "]";
} }
 package com.test;

 import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class ReflectTest { public static Car initByDefaultConst() throws Throwable{
//通过类转载器获取Car类对象
//ClassLoader loader = Thread.currentThread().getContextClassLoader();
//Class clazz = loader.loadClass("com.test.Car");
Class clazz = Class.forName("com.test.Car"); //构造器器参数列表
Class[] cl = {String.class, String.class, int.class}; //获取默认的构造器
//Constructor cons = clazz.getDeclaredConstructor(null); //获取指定的带参数的构造器对象,并通过它实例化Car
Constructor cons = clazz.getDeclaredConstructor(cl);
//构造器参数
Object[] ps = {"红旗H7", "黑色", 200};
//创建实例
Car car = (Car)cons.newInstance(ps); //通过反射方法设置属性
/* Method setBrand = clazz.getMethod("setBrand", String.class);
setBrand.invoke(car, "红旗H7");
Method setColor = clazz.getMethod("setColor", String.class);
setColor.invoke(car, "黑色");
Method setMaxSpeed = clazz.getMethod("setMaxSpeed", int.class);
setMaxSpeed.invoke(car, 200);*/
return car;
} public static void main(String[] args) throws Throwable {
Car car = initByDefaultConst();
System.out.println(car);
} }

使用反射类、Class类获取指定的构造器并实例化对象的更多相关文章

  1. java类的初始化块/执行顺序,实例化对象数据赋值

    java里初始化一个类的对象,通过初始化快或者构造方法进行数据赋值.与其相关的执行代码有这么几种: 静态初始化块 初始化块 构造方法 静态初始化块 静态初始化块只在类加载时执行一次,同时静态初始化块只 ...

  2. Java反射机制(获取Class对象的三种方式+获取Class中的构造函数进行对象的初始化+获取反射类的字段+获取反射类的一般方法)

    反射技术其实就是动态加载一个指定的类,并获取该类中的所有内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员,简单来说:反射技术可以对一个类进行解剖,反射大大增强 ...

  3. SpringBoot27 JDK动态代理详解、获取指定的类类型、动态注册Bean、接口调用框架

    1 JDK动态代理详解 静态代理.JDK动态代理.Cglib动态代理的简单实现方式和区别请参见我的另外一篇博文. 1.1 JDK代理的基本步骤 >通过实现InvocationHandler接口来 ...

  4. java反射(三)--反射与操作类

    一.反射与操作类 在反射机制的处理过程之中不仅仅只是一个实例化对象的处理操作,更多的情况下还有类的组成的操作,任何一个类的基本组成结构:父类(父接口),包,属性,方法(构造方法,普通方法)--获取类的 ...

  5. Java反射——根据配置文件,实例化对象

    案例:根据配置文件,实例化对象 src下创建一个"配置文件"config.txt,内容如下: className=ahjava.p07reflect.Cat package ahj ...

  6. Java实现通过反射获取指定类的所有信息

    package com.ljy; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.l ...

  7. java进阶之反射:反射基础之如何获取一个类以及如何获取这个类的所有属性和方法(2)

    当我们知道一个类的对象,或者知道一个类的路径,或者指导这个类的名称的时候我们可以获取到这个类的类对象 当我们仅仅知道一个类的类对象的时候我们依然无法操作这个类,因为我们不知道这个类的属性,类的方法.那 ...

  8. java中使用反射做一个工具类,来为指定类中的成员变量进行赋值操作,使用与多个类对象的成员变量的赋值。

    //------------------------------------------------我是代码的分割线 // 首选是一个工具类,在该工具类里面,定义了一个方法,public void s ...

  9. XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)

    XML序列化   #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...

随机推荐

  1. Maven命令行创建web项目,并部署到jobss当中(解决No plugin found for prefix 'jboss-as' in the current project and in the plugin groups [org.apache.maven.plugins,问题)

    首件创建项目:此处可参照:http://maven.apache.org/guides/mini/guide-webapp.html mvn archetype:generate -DgroupId= ...

  2. poj 3100

    题意:给你两个数B.N,求一个数的N次方最接近B. 先求出B的1/N次方:A,然后比较A和A+1的N次方那个更接近B #include<stdio.h> #include <math ...

  3. mysql 数据库热备份

    https://www.percona.com/doc/percona-xtrabackup/2.2/index.html

  4. 使用fastcgi_cache加速网站

    为了提高网站的性能缓存是一把利器,nginx中可以配置fastcig_cache来缓存不需要实时获取的数据实现动静分离,nginx.conf配置如下: http {     -     fastcgi ...

  5. jQuery treeview的简单用法

    最近的项目要用到treeview插件,刚好就自己整理一下这方面的资料. 1.文档树示例 最简单的一个例子就是文档树的实现.效果如下图所示. 在使用treeview之前,html文档中需要包含几个jqu ...

  6. PHP中mktime() 函数对于日期运算和验证

    mktime() 函数对于日期运算和验证非常有用.它可以自动校正越界的输入: // 语法:mktime(hour,minute,second,month,day,year) echo(date('Y- ...

  7. css3之border-color

    -moz-border-top-colors:上边框-moz-border-right-colors:右边框-moz-border-bottom-colors:下边框-moz-border-left- ...

  8. 用不动点组合子解递归(python实现)

    不动点组合子 Y = λf. (λx. f (x x)) (λx. f (x x)) θ = (λx. λy. (y(x x y))) (λx.λy.(y(x x y))) Y f = f (Y f) ...

  9. C++设计模式之命令模式

    厨师类: #include "Cooker.h" Cooker::Cooker(void) { } Cooker::~Cooker(void) { } void Cooker::M ...

  10. 谈谈文件增量同步算法:RSYNC和CDC

    谈谈文件增量同步算法:RSYNC和CDC 分类: 数据同步 增量备份 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在研究文件的增量同步问题,着重研究了文件差异编码部分,因为这个其实是文件 ...