java设计动态字段(java 静态字段)

今天给各位分享java设计动态字段的知识,其中也会对java 静态字段进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、如何动态添加字段和方法在一个Java类里面? 有的话有没有一个简单的例子可以参考?2、java 对象的属性动态化(读取数据库中表的字段)3、java 可以动态创建 属性字段么4、用JAVA语言如何动态为类中字段赋值5、怎么在java中插入一个动态的行或列

如何动态添加字段和方法在一个Java类里面? 有的话有没有一个简单的例子可以参考?

所学知识有限,我也是新手,但是据我所知是不能动态添加字段和方法的。

但是我们可以用继承,建立一个子类,用子类来扩展父类的字段,重写父类的方法,也可以添加子类特有的方法。

也可以用has-a的形式,用一个类包涵另一个类的形式,为原来的类增加功能方法和字段。

java 对象的属性动态化(读取数据库中表的字段)

java.sql.ResultSetMetaData这个类可以实现你想要的功能,看下jdk的api吧

给点提示:

先通过select * from table where 1=0选出一个空的结果集,然后对此结果集使用MetaData,通过调用这个类的适当方法你就可以得到这个表的所有列名了

java设计动态字段(java 静态字段)

java 可以动态创建 属性字段么

可以的,你用 javassist, cglib 或者更为底层的工具 ASM 都是可以。

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;

}

@Override

public FieldVisitor visitField(int access, String name, String desc,

String signature, Object value) {

if (name.equals(this.name)) {

isFieldPresent = true;

}

return cv.visitField(access, name, desc, signature, value);

}

@Override

public void visitEnd() {

if (!isFieldPresent) {

FieldVisitor fv = cv.visitField(accessModifier, name, desc, null, null);

if (fv != null) {

fv.visitEnd();

}

}

cv.visitEnd();

}

}

3,添加属性的工具 AddField.java

Java code?

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

import org.objectweb.asm.ClassAdapter;

import org.objectweb.asm.ClassReader;

import org.objectweb.asm.ClassWriter;

import org.objectweb.asm.Opcodes;

public class AddField {

private Class clazz = null;

private ClassReader cr = null;

private ClassWriter cw = null;

private ClassAdapter ca = null;

private File classFile = null;

private final static String CLASS_FILE_SUFFIX = “.class”;

public AddField(Class clazz) {

this.clazz = clazz;

}

/**

* 添加一个 public 的类成员

* @param fieldName 类成员名

* @param fieldDesc 类成员类型描述

*/

public void addPublicField(String fieldName, String fieldDesc) {

if(cr == null) {

try {

cr = new ClassReader(clazz.getCanonicalName());

} catch (IOException e) {

e.printStackTrace();

}

cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS);

}

if(ca == null) {

ca = new AddFieldAdapter(cw, Opcodes.ACC_PUBLIC, fieldName, fieldDesc);

} else {

ca = new AddFieldAdapter(ca, Opcodes.ACC_PUBLIC, fieldName, fieldDesc);

}

}

/**

* 将字节码写入类的 .class 文件

*

*/

public void writeByteCode() {

cr.accept(ca, ClassReader.SKIP_DEBUG);

byte[] bys = cw.toByteArray();

OutputStream os = null;

try {

os = new FileOutputStream(getFile());

os.write(bys);

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

/**

* 获得类文件的 File 对象

* @return

*/

private File getFile() {

if(classFile == null) {

StringBuffer sb = new StringBuffer();

sb.append(clazz.getResource(“/”))

.append(clazz.getCanonicalName().replace(“.”, File.separator))

.append(CLASS_FILE_SUFFIX);

classFile = new File(sb.substring(6));

}

return classFile;

}

}

用JAVA语言如何动态为类中字段赋值

在java类中,对所有字段使用get set方法,在其他类中使用这个类时,只需要声明这个类对象(比如User 类有name age字段,在其他类中使用是User user = new User(); user.setName(“名称”);就可以)user点就可以出现类中字段,想用哪个就用哪个。

怎么在java中插入一个动态的行或列

alter table Test add name varchar(30) 增加一列 列名为name的字段个人认为这种操作极有可能破坏数据的完整性和一致性。如果你在程序中还给用户提供一个这样的页面来运行它,运行用户自己来新增字段,向数据库发送 alter table add column…这样的DDL,我认为不可取 。

关于java设计动态字段和java 静态字段的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月31日 02:11:23
下一篇 2024年3月31日 02:17:41

相关推荐

  • 黑客动态文案励志学习图片,黑客动态表情包

    关于青春的励志文案图片 1、青春励志 带字图片欣赏 1) 青春人的一生中最美好年岁。它是一个人的生命含苞待放的时期,生机勃发朝气蓬勃;它意味着进取,意味着上升,蕴含着巨大希望的未知数。 2、路是自己选的,所以即使以后会跌倒,会受伤,也都要学会自己承受,自己疗伤。我们都是这样,学会长大的。 3、翻脸不如翻身,生气不如争气。活着不是靠泪水博得同情,而是靠汗水赢得…

    2024年5月23日
    6000
  • 帝国cms7.2linux伪静态,帝国cms php80

    想自己建网站做SEO赚钱,应如何操作 想做个网站练手这种情况接触的比较多,很多程序员、SEO在新手期都会这么干,也非常推荐。很好的一种学习方式,成本也不高,一个服务器加一个域名,选一般配置就够了,一年大概不会超过一千块。 网站建设时期,一定要构造优化基础,如果自己不会,找网络公司建网站,如纽麦得、找优化等。多听听工程师的优化建议,同时可以找找,关键词排名好的…

    2024年5月23日
    4300
  • linuxip动态获取,linux网卡动态获取ip

    linux下怎么获取当前能连上网的那个ip地址 1、连接上相应的linux主机,进入到等待输入shell指令的linux命令行状态下。 在linux命令行下输入shell指令:ip addr eth0。 键盘按“回车键”运行shell指令,此时会查询到eth0网卡的ip地址。 2、首先在电脑中打开linux客户端,点击连接linux按钮。然后输入用户名,主机…

    2024年5月23日
    3700
  • java动态生成复选框,java复选框如何回显数据

    如何用javaScript实现复选框的联动? 很简单,给表格一个ID,ID=form1,再给个参数sty;e=display:none;然后JavaScript写 function open(){document.getElementById(form1).style.display=block} 在按钮上写JavaScript:open();好了,试试看。…

    2024年5月23日
    4100
  • excel中去掉逗号,excel去掉逗号后面字段

    excel如何去掉逗号分隔符? 首先,在电脑上打开要处理的Excel工作表,如图所示,G下面的单元格有下拉菜单。然后,点选有下拉菜单的单元格,再依次点击数据有效性的图标——数据有效性的选项。 首先,打开Excel表格程序,进入主界面中,选中一个蒂娜元个发信啊前面带有小逗号。然后,在空白的单元格位置,输入“1”,点击打开。然后,在Excel程序主界面上方选择“…

    2024年5月23日
    3400
  • javascript动态添中js文件,js文件加动态版本号问题

    如何在js中动态引入或加载js文件 1、项目中需要用到动态加载CSS 文件,整理了一下,顺便融合了动态加载JS 的功能写成了一个对象,先上代码:对象包含两个完全独立的方法,分别用来加载CSS 文件和JS 文件,参数均为欲加载的文件路径。 2、\x0d\x0a首先,在html中引入b.js,并在之后加入引用语句。必须注意,将要引入的Js文件代码放在下面。 3、…

    2024年5月22日
    4400
  • linux取字段,linux 提取字符串内容

    linux如何提取两个不同字段之间的一段字 1、例子 提取字符串以下字符串 error: 与 : 之间的子字符串。并消除空格。 2、cut。Linux,是一种类似Unix的操作系统,在该操作系统中想要截取双引号内的内容,是可以使用操作系统中的cut操作命令的,Linux可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。 3、在 Linux …

    2024年5月22日
    4700
  • 如何在excel中删除同一列中相同的字段,如何删除一列中相同的内容

    excel如何删除重复的内容 1、用替换功能,Ctrl+H打开替换窗口,查找栏输入想删掉的文字,替换栏不写东西,全部替换。也可以使用函数=substitute(a1,删除内容,)。 2、方法如下 首先打开需要修改的EXCEL表格,进入到表格中,显示当前数据内容,为了说明情况,小编使用较少数据量,全选目标单元格的内容。为了说明问题,需要将重复项进行高亮操作,点…

    2024年5月22日
    4100
  • 黑客动态文案励志壁纸学习,黑客动态壁纸下载

    励志文案||山河湖海都会化作你来时的路。 当你克服了人生的艰难险阻,山河湖海都会化作你来时的路。 当你克服了人生的艰难险阻,山河湖海都会化作你来时的路。你本无意穿堂风,偏偏孤倨引山洪。 当你克服了人生的艰难险阻,山河湖海都会化作你来时的路。一个人至少拥有一个梦想,有一个理由去坚强。心若没有栖息的地方,到哪里都是在流浪。 壁纸文案手机壁纸文案(精选78句) 强…

    2024年5月22日
    4300
  • 黑客动态图片文案励志学习,黑客动态代码图

    关于学习励志的文案 励志文案学习(精选96句) 今天应做的事没有做,明天再早也是耽误了。 哪里有天才,我是把别人喝咖啡的功夫,都用在工作上的。 读书有三到,谓心到,眼到,口到。 应当记忆的不是结论,而是方法。 【通俗文案类】读书在于造成完全的人格。登高而招,臂非加长也,而见者远;顺风而呼,声非加疾也,而闻者彰。知识永远战胜愚昧。 你现在的付出,都会是一种沉淀…

    2024年5月22日
    4200

发表回复

登录后才能评论



关注微信