cglib中ImmutableBean问题分析
程序员文章站
2022-06-18 10:58:44
...
直接上代码:
package org.wwx.cglib.source.test;
import net.sf.cglib.beans.ImmutableBean;
class SampleBean {
private String value;
public SampleBean() {
}
public SampleBean(String value) {
this.value = value;
}
public String geValue() {//注意方法名ge
return this.value;
}
public String getValue() {//正常get方法
return this.value;
}
public String getttttt() {//石乐志的get方法
return this.value;
}
public void setValue(String value) {//正常set方法
this.value = value;
}
public void settValue(String value) {//石乐志set方法
}
public void seValue(String value){//注意方法名se
this.value = value;
}
}
public class CglibTest1 {
public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
// TODO Auto-generated method stub
SampleBean bean = new SampleBean("ww");
SampleBean immutableBean = (SampleBean) ImmutableBean.create(bean); //创建不可变类
System.err.println(immutableBean.getValue());//获得ww
immutableBean.seValue("22");//不报错
//immutableBean.settValue("");//报错
//immutableBean.setValue("");//报错
String s = immutableBean.geValue();
System.err.println(s);//获得22
String str = immutableBean.getValue();
System.err.println(str);//获得ww
String str1 = immutableBean.getttttt();
System.err.println(str1);//获得ww
}
}
看看代理对象在eclipse中是怎么显示的吧
这里我们不难发现代理对象中持有被代理对象的具体类型。
其实我之前,一直好奇这个ImmutableBean这个东东的代码实现方式是怎样的,今天分析了一下,感觉有点收获,
原谅我看不了反编译的文件,搞了好久也不行。只有笨方法,自己试咯。
个人感觉这个ImmutableBean实现的应该很简单,甚至说很僵硬。(个人感觉)
这个不可变的对象其实,只对方法进行了限制,而且很狭隘的限制,只有那个方法名称开头是get或者是set的方法才生效,其余一切方法都不生效。
就这些了。
真的很僵硬。。。。。
github有cglib的源码,maven构建的,github:
https://github.com/wwxname/cglib-resource.git
https://github.com/wwxname/cglib-resource.githttps://github.com/wwxname/cglib-resource.git
上一篇: MachineLearning—AdaBoost算法代码应用实现
下一篇: 51单片机的串口通迅
推荐阅读
-
SQL语句练习实例之五 WMS系统中的关于LIFO或FIFO的问题分析
-
Android颜色编辑器的制作中遇到的问题分析
-
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
-
Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案
-
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
-
深入分析python中整型不会溢出问题
-
jQuery中$.click()无效问题分析
-
对手机网站制作中需要注意哪些方面的问题展开分析
-
Oracle使用序列sequence时currval提示未在此会话中问题分析和解决办法
-
Flask和Django框架中自定义模型类的表名、父类相关问题分析