Car.java
package com.bjfu.ioc;
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.bjfu.ioc;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class ReflectTest {
/**
* @param args
* @throws Throwable
*/
public static void main(String[] args) throws Throwable {
// TODO Auto-generated method stub
Car car = initByDefaultConst();
System.out.println(car);
}
public static Car initByDefaultConst() throws Throwable {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class clazz = loader.loadClass("com.bjfu.ioc.Car");
Constructor cons = clazz.getDeclaredConstructor((Class[])null);
Car car = (Car)cons.newInstance();
Method setBrand = clazz.getMethod("setBrand", String.class);
setBrand.invoke(car, "red carCA72");
Method setColor = clazz.getMethod("setColor", String.class);
setColor.invoke(car, "black");
Method setMaxSpeed = clazz.getMethod("setMaxSpeed", int.class);
setMaxSpeed.invoke(car, 2000);
return car;
}
}
分享到:
相关推荐
5. **枚举的构造函数**:枚举类默认是final且私有的,所以不能通过常规方式实例化新的枚举值。但反射可以访问私有构造函数,尽管不推荐这样做,因为这违反了枚举的设计原则。 在"test-enum-demo-master"项目中,...
3. **实例化对象**: `Class`对象提供了`newInstance()`方法,用于创建类的新实例。但是,这个方法要求类必须有一个无参数的公共构造器。如果类没有这样的构造器,或者构造器需要参数,我们需要使用`Constructor`对象...
通过上述实例,我们可以看到Java反射机制在许多实际场景中的应用,它扩展了Java代码的灵活性和可扩展性。然而,也应注意,过度使用反射可能会引入复杂性和潜在的安全风险,因此在设计和实现时需权衡利弊。在理解了...
2. **反射实例化对象**: - 使用`Constructor`的`newInstance()`方法可以动态创建类的对象,即使这个类没有公开的构造器。 3. **动态调用方法**: - `Method`类的`getMethods()`返回所有公共方法,`getMethod...
在本篇文章中,我们将深入探讨如何通过反射获取构造方法并实例化对象,这对于理解和使用Java的动态性至关重要。 首先,我们需要了解`java.lang.Class`类,它是Java中所有类的通用表示。当我们知道一个类的名字...
通过java类的路径实例化类并调用方法:仅仅知道类的路径,就可以实例化对象,利用反射机制调用其方法
总的来说,"JAVA反射机制的入门代码"是初学者理解Java反射机制的好教材,通过它,你可以学习如何动态地操作Java类,提高代码的灵活性,并掌握处理`properties`文件的基础方法。在深入学习和实践中,你将进一步理解...
如果我们知道接口的实现类,可以通过反射API的`getDeclaredConstructor()`和`newInstance()`方法来创建一个实例,其中`getDeclaredConstructor()`用于获取指定的构造器,`newInstance()`则用来实例化对象。...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地获取类的信息并调用其方法,创建对象,访问私有成员,甚至改变类的行为。在深入...
反射和泛型是一种重要的解决途径。 此代码是一个生成泛型对象的类。 比如: Pool<Point> pool = new Pool(){}; Point p = pool.get(x, y); //在此构造Point对象 ... pool.put(p); 希望能帮助那些为查找泛型构造器、...
然而,在 Java 中使用泛型时,会出现一个问题:如何实例化泛型对象?在 Java 中,泛型擦除机制使得编译器无法确定泛型所对应的真实类型,因此无法直接实例化泛型对象。下面将详细介绍 Java 让泛型实例化的方法。 ...
可以学习如何通过Java的反射机制实例化对象、调用对象的方法、操作对象的私有成员变量、改变数组中的某项的值、改变数组大小等;可以学习Java的动态代理模式、学习Java工厂模式以及如何将工厂模式与属性文件相结合。
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个资源“java反射调用实例代码”提供了关于如何使用Java反射API进行各种...
标题"Java反射实例源码"表明我们将探讨如何通过源代码来实现和理解Java反射。这个实例可能包含了如何动态地创建对象、调用方法、访问字段和执行构造器的示例。 描述中提到的博客文章"菜鸟学编程(九)——Java反射...
在标题“Java反射实例”中,我们聚焦于如何在实际编程中应用这一特性。通过反射,我们可以动态地获取类的信息,如类名、方法名、字段名,甚至可以在运行时创建和调用对象。这对于实现元编程、插件系统、序列化、单元...
Java反射API主要由`java.lang.reflect`包中的几个类组成,包括`Class`、`Constructor`、`Method`和`Field`。通过这些类,我们可以: 1. 获取类的信息:通过`Class.forName()`方法,可以获取到类的`Class`对象,从而...
可能的实现是先使用XML解析库(如JAXB或DOM)将XML字符串解析成DOM树,然后通过反射找到对应的类并创建实例,再根据XML节点信息设置对象的属性。这一过程涉及到了对`java.lang.reflect`包中类的使用,如`Class.for...
以下是对"Java反射实例"的详细解释: 1. **获取Class对象** 要使用反射,首先需要获取到对应的`Class`对象。这可以通过以下三种方式实现: - 使用`Class.forName()`方法,传入类的全名(包括包名)。 - 对象的`...
反射为开发者提供了强大的能力,可以在不知道具体类名的情况下实例化对象,调用方法,访问字段,以及处理泛型等。这一特性在许多场景下非常有用,例如框架开发、元编程、代码自动生成和测试工具等。 1. 类与对象的...
在标题和描述中提到的"java反射实例"是一个简单的入门程序,旨在演示如何使用反射来操作JavaBean的get和set方法。 首先,让我们理解JavaBean。JavaBean是一种符合特定规范的Java类,通常具有公有的getter和setter...