Java--反射

本文详细介绍了Java的反射技术,包括如何通过Class对象实例化对象,使用Field类操作类的属性,利用Method动态调用方法。此外,还展示了反射在实现SQL语句自动生成中的实际应用。
摘要由CSDN通过智能技术生成

目录

1.反射技术

2.Class对象

2.1 类的实例化

2.1.1 反射创建对象的过程 & 代码

 2.2 Field类--描述类中的属性(数值域)

2.3 Method -- 动态调用方法

4.反射的应用--实现SQL语句的自动生成


1.反射技术

        运行时动态访问对象属性方法的技术。

2.Class对象

2.1 类的实例化

创建对象的四种方式
方式 举例
new关键字 new Car();
clone(Object的方法) c.clone();
序列化(Serialable)/反序列化 ObjectInputStream/ObjectOutputStream
反射Class对象 clazz.newInstance();

2.1.1 反射创建对象的过程 & 代码

1.通过类加载得到class对象

2.class.newInstance() 创建对象--内部:调用默认的无参构造方法 (若编写有参构造方法,会导致无参构造被覆盖,无法创建对象,从而报错)

public class ClassDemo {
	static class InnerClass{
		public InnerClass(){
			System.out.println("无参构造方法");
		}
		public void print() {
			System.out.println("hi,静态内部类");
		}
	}
	
	public static void main(String[] args) throws InstantiationException, IllegalAccessException {
		//1.创建对象
//		new InnerClass();
		
		//2.类加载 + 反射 创建对象
		Class<InnerClass> clazz = InnerClass.class;
		InnerClass a = clazz.newInstance();
		a.print();
	}
}

运行结果如下图所示:

 2.2 Field类--描述类中的属性(数值域)

        在不存在get()方法使用,可以获取属性信息并进行修改

  • field.setAccessible(true); -->设置属性可以访问(默认private 不能被访问)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值