在method方法被调用之后,仅打印出a=100,b=200,请写出method方法的代码
// 重定向
public static void method(int a , int b) {
System.setOut(
new PrintStream(System.out) {
@Override
public PrintStream printf(String format, Object... args) {
if ( format.matches("a.*") ) {
args[0] = b ;
args[1] = a ;
}
return super.format(format , args) ;
}
}
);
}
// 反射
public static void method(Integer a , Integer b) {
try {
// 获取Filed对象
Field af = a.getClass().getDeclaredField("value") ;
Field bf = b.getClass().getDeclaredField("value") ;
// 跳过私有属性访问检查
af.setAccessible(true) ;
bf.setAccessible(true) ;
// 修改内容
int tmp = a ;
af.setInt(a , b) ;
bf.setInt(b , tmp) ;
af.setAccessible(false) ;
bf.setAccessible(false) ;
} catch ( Exception e) {
e.printStackTrace() ;
}
}