
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
}
所学知识有限,我也是新手,但是据我所知是不能动态添加字段和方法的。但是我们可以用继承,建立一个子类,用子类来扩展父类的字段,重写父类的方法,也可以添加子类特有的方法。
也可以用has-a的形式,用一个类包涵另一个类的形式,为原来的类增加功能方法和字段。
基本上“动态添加一个数据库字段”是数据库SQL本身的事,与Delphi关系不大。ADOCommand1.CommandText := 'alter table 表名 add 字段名1 varchar(12),字段名2 integer,字段3 datetime'
ADOCommand1.Execute
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)