ASM 的话相对复杂一些,参考代码:
下面这个是用 ASM 工具为 Student 类添加一个 public String 类型的 address 属性:
1,需要添加属性的原始类:Student.java
Java code?
public class Student {
private int age
private String name
public int getAge() {
return age
}
public void setAge(int age) {
this.age = age
}
public String getName() {
return name
}
public void setName(String name) {
this.name = name
}
}
2,添加属性的适配器:AddFieldAdapter.java
Java code?
import org.objectweb.asm.ClassAdapter
import org.objectweb.asm.ClassVisitor
import org.objectweb.asm.FieldVisitor
public class AddFieldAdapter extends ClassAdapter {
private int accessModifier
private String name
private String desc
private boolean isFieldPresent
public AddFieldAdapter(ClassVisitor cv, int accessModifier, String name, String desc) {
super(cv)
this.accessModifier = accessModifier
this.name = name
this.desc = desc
}
所谓实体类,据我观察主要用在泛型集合里,为了满足强类型系统的要求.OOP的思想就是用人类认识世界的方式去做程序设计.所以,把我们看到的一切都作为对象, 比如人类, 我可以用程序去描述他, 身高,体重,肤色,种族等等, 把这"一类"抽象出来.这就给我们一个感觉, 实体类只包含属性,没有方法.尽管方法和属性其实一样,只是属性描述数据成员, 这也是C#优势所在, 它更接近人类认识世界的过程 --- 属性,比如上述的身高,体重等.但是其他语言似乎没有属性一说.
把所有动作(方法和事件)放在另外的类中, 叫做控制类. 这就是MVC的概念.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)