Java基础知识1

一、杂七杂八

  1. 自动装箱和自动拆箱

自动装箱是指将int等基本类型转换为Integer类等

Integer i = 123;           // 隐式调用了Integer.valueOf(123)
Integer i = Integer.valueOf(123);



自动拆箱是指将Integer类等转换为int等基本类型

  1. 缓存池

int类型有[-128, 127]的缓存池,如果

二、Java反射+动态代理

//定义一个接口协议 
interface CalculatorProtocol{
	public int add(int a, int b);        //两个数相加 
	public int subtract(int a, int b);   //两个数相减 
}

//实现接口协议 
class Server implements CalculatorProtocol {
	public int add(int a, int b) {
		return a+b;
	}
	public int subtract(int a, int b) { 
		return a-b;
	}
}

//实现调用处理器接口
class CalculatorHandler implements InvocationHandler {
	private Object objOriginal;
	
	public CalculatorHandler(Object obj) {
		this.objOriginal=obj;
	}
	public Object invoke(Object proxy, Method method, Object[]args) throws Throwable {
	//可添加一些预处理
	Object result=method.invoke(this.objOriginal, args);
	//可添加一些后续处理
	return result;
	}
}

//测试用例
public class DynamicProxyExample {
	public static void main(String[]args) {
	// 创建Server
	CalculatorProtocol server=new Server();
	InvocationHandler handler=new CalculatorHandler(server);
	// 创建一个Client
	CalculatorProtocol client=(CalculatorProtocol)Proxy.newProxyInstance(server.getClass().getClassLoader(), server.getClass().getInterfaces(), handler); 
	int r=client.add(53);
	System.out.println("5+3="+r);
	r=client.subtract(102);
	System.out.println("10-2="+r);
	}
}

在上面这个例子,用户只需要实现InvocationHandler的invoke方法就可以完成对CalculatorProtocol动态代理类上的方法调用,具体调用时可以使用client这个对象代理了Server类,需要server执行的操作,都调用client来做,client会自己在内部再次调用Server类,client可能自己还会加入一些操作
用户在开发时时候并不知道server对象是哪个类,只知道这个它实现了CalculatorProtocol

为了实现这种代理,java语言需要提供一些机制:
❑Class类:代表一个Java类。
❑Field类:代表Java类的属性。
❑Method类:代表Java类的方法。
❑Constructor类:代表Java类的构造函数。 ❑Array类:提供了动态创建数组,以及访问数组元素的静态方法。
❑Proxy类以及InvocationHandler接口:提供了动态生成代理类以及实例的方法。



打印当前目录

System.out.println(System.getProperty("user.dir"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值