
java 关于反射机制的问题
现在问题是这样的,一切问题都是相对于实体类的,比如有person-->teacher()-->math-teacher我用的getDeclarefield能获得属性值但是...
现在问题是这样的,一切问题都是相对于实体类的,比如有person-->teacher()-->math-teacher 我用的getDeclarefield能获得属性值 但是父类的属性无法获取,getSupperClass能获得最贴近的一个父类,现在问题如果有层继承,怎么获得所有属性,比如这个问题怎么获得math-teacher的所有属性
怕大家难以理解
我们会经常用到java 实体类 插入数据库的操作 ,我们知道重复写sql很麻烦 都要重复写属性字段,现在我用java的反射机制来实现,每一个实体类都有get和set方法,用getDelcaredField能这个获得所有实体类的所有属性,然后拼凑成sql语言。
现在我的问题是getDelcaredField只能获得实体类自身的属性 他的父类的属性无法获得,比如Person(name,sex),Teacher(school),Math_teacher(xxx) 我对Math_teacher这个类调用getDelcaredField,只能获得xxx的值,无法获得Teacher的属性值,
这个问题我也google过,但是上面只有获得最近一个父类的属性值(既是Teacher),如果有多层继承呢,如何获得Math_teacher的所有属性值既是(name,sex,school,xxx)。 展开
怕大家难以理解
我们会经常用到java 实体类 插入数据库的操作 ,我们知道重复写sql很麻烦 都要重复写属性字段,现在我用java的反射机制来实现,每一个实体类都有get和set方法,用getDelcaredField能这个获得所有实体类的所有属性,然后拼凑成sql语言。
现在我的问题是getDelcaredField只能获得实体类自身的属性 他的父类的属性无法获得,比如Person(name,sex),Teacher(school),Math_teacher(xxx) 我对Math_teacher这个类调用getDelcaredField,只能获得xxx的值,无法获得Teacher的属性值,
这个问题我也google过,但是上面只有获得最近一个父类的属性值(既是Teacher),如果有多层继承呢,如何获得Math_teacher的所有属性值既是(name,sex,school,xxx)。 展开
9个回答
展开全部
留个邮箱吧 我自己也封装了一个类似hibernate的持久层 代码不长 功能简单实用 你有兴趣的话可以给你看看 你直接hi我就行 我几乎每天都在线 你这个3楼的方法也行能获得所有属性
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
此方法可以解决你的问题 有什么不懂的 可以直接hi我
package com.sf.book.reflection;
import java.lang.reflect.Field;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
printField(C.class);
}
@SuppressWarnings("unchecked")
public static void printField(Class clz) {
Class superClass = clz.getSuperclass();
if (superClass != null) {
printField(superClass);
}
Field[] fields = clz.getDeclaredFields();
System.out.println(clz.getName());
for (int i = 0; i < fields.length; i++) {
System.out.println(fields[i].getName());
}
}
}
package com.sf.book.reflection;
import java.lang.reflect.Field;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
printField(C.class);
}
@SuppressWarnings("unchecked")
public static void printField(Class clz) {
Class superClass = clz.getSuperclass();
if (superClass != null) {
printField(superClass);
}
Field[] fields = clz.getDeclaredFields();
System.out.println(clz.getName());
for (int i = 0; i < fields.length; i++) {
System.out.println(fields[i].getName());
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题可以用hibernate框架解决。。。我发个关于这个的核心源码给你看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
revoke~ U 还是给他个现成的吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询