Java 反射获取数据

反射获取成员变量

使用 Sql2o 方法读取数据库的时候,发现表名类似,但是有一些差别,如果使用 select * 方式查询,需要针对对象声明多个内容,但是实际上用的都是一样的,所以想通过获取成员变量的名称来拼接成 select 后面的内容,经过尝试,发现可以用下面的方法获取:

public String allName(){
    String allName = "";
    Field[] fields = this.getClass().getDeclaredFields();
    for(Field field : fields){
        allName += field.getName() + ",";
    }
    return allName.substring(0, allName.length() -1);
}

这样之后,调用 allName() 方法就能直接获取对应的变量名称了。

反射获取父类实例化对象中的值

try {
    Field[] fields = super.getClass.getDeclaredFields();
    for (Field field : fields) {
        field.setAcessible(true);
        Method method = super.getClass().getDeclaredMethod("get" + upperHeadChar(field.getName()));
        Object obj = method.invoke(super);
        field.set(this, obj);
    }
} catch (NoSuchMethodException | IllegalAcessException | InvocationTargetException e){
    e.printStackTrace();
}

private static String upperHeadChar(String in){
    String head = in.substring(0,1);
    return head.toUpperCase() + in.substring(1);
}
Author
Tags
总结(3) Emacs(2) org mode(4) 年度清单(2) 读书清单(2) 电影清单(2) 电视清单(2) Python(3) 学习计划(1) 子弹笔记(1) 手帐体系(1) 时间管理(1) 时间使用效率(1) 形意拳(1) 知识管理(1) 简历(1) 技能水平(1) 生活(1) 减法生活(1) 阅读(1) 阅读分组(1) org(1) docx(1) markdown(2) cmder(1) 图床(1) jsdelivr(1) github(1) 安卓系统(1) 手动更新手机系统(1) post link(1) post path(1) hexo(2) hugo(2) GitHub Pages(1) travis(1) 自动部署博客(1) presentation(1) gcc(1) g++(1) 默认表格(1) 复杂表格(1) multimd table(1) google adsense(1) evil(1) surround(1) librime(2) emacs-rime(1) liberime(1) dot(1) graphviz(1) use-sub-superscripts(1) ditaa(1) Evil Multiple cursors(1) turn evil mode off(1) modifier keys(1) keymap(1) super(1) hyper(1) install Emacs(1) Mac OS(1) keybinds(1) clocktable(1) coding system(1) image library(1) keybind(1) spacemacs(1) org babel(1) homebrew(1) dd(1) diskutil(1) tmux(1) xcode(1) xcrun(1) node-gyp(1) tar(1) tree(1) pacman(1) plantuml(1) find(1) grep(2) du(1) apt-get(1) apt(1) regex(1) wildcard(1) zsh(1) gdb(1) lsof(1) netstat(1) rebase(2) workflow(1) 工作流(1) .gitignore(1) postbuffer(1) hung up(1) merge(1) cache(1) reset(1) Git(1) command(1) submodule(1) GitHub Pull Request(1) pr(1) Matplotlib(1) beautifusoup(1) 下载小说(1) SOLID(1) Leetcode(2) 透视表(1) read_excel()(1) pandas(1) conda(1) django(1) markdown-deux(1) mysql(1) oracle(1) 模糊查询(1) logging level(1) reflex(1) Field(1) Maven(1) Selenium(1) 下拉框(1) select into(1) insert into select(1) CAST(1) CONVERT(1) timestamp(1) concat(1) concat_ws(1) group_concat(1) union(1) grant privileges(1) 重置 root 密码(1) 报错 10060(1) 清理连接数(1) create user(1) set password(1) exists(1) in(1) markdown-it(1) emoji(1) tasks(1) valine(1) Code 504(1) Hugo(1) theme(1) substring(1) indexOf(1) RegExp(1) 定位节点(1) 正则匹配(1) async(1) 异步请求(1) css(2) layui(1) 滚动条(1) JavaScript(1)