【问题标题】:determine type of class member via reflection通过反射确定类成员的类型
【发布时间】:2013-02-02 02:57:55
【问题描述】:

我使用以下代码来确定类成员类型,我已经看过所有的自省方法,但还没有完全弄清楚如何在我的代码中对字符串、BigDecimal、日期等类型执行此操作,您可以看到我检查原语并调用处理它的方法。 1. 我想对 string ,BigDecimal ,fieldTypeName,java.util.Date 等做同样的事情我应该怎么做?

  1. 这种类型怎么称呼?

对于诸如 jobList 之类的泛型类型,我使用 genericType 处理程序...

Object newInstance = clsObj.getClass().newInstance();

                for (Field field : declaredFields) {

                    // Get member name & types

                    Class<?> fieldType = field.getType();
                    Type genericType = field.getGenericType();
                    String fieldTypeName = fieldType.getName();
                    String memberName = field.getName();

                    boolean primitive = field.getType().isPrimitive();
                    handlePrimtive();

if (genericType instanceof ParameterizedType) {

这是课

@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private int id;
private String firstName;
private BigDecimal bigDecimal;
private java.util.Date myDate;
private List<Job> jobList = new ArrayList<Job>();

【问题讨论】:

    标签: java reflection types type-conversion


    【解决方案1】:
    Class <?> type = field.getType ();
    if (String.class.equals (type)) handleString ();
    else if (Date.class.equals (type)) handleDate ();
    ...
    

    【讨论】:

    • 有没有通用的方法来处理它?例如原始,因为在这里我需要明确要求每种类型,并且我不确定我是否知道所有类型,因为例如这个类人,但我可以获得任何类型的带有附加字段的类......
    • @JohnJerrby 也许我不明白您所说的“类型,如字符串、BigDecimal、日期等”是什么意思,尤其是“等”的其他类型。您能否澄清或仅列出所有“此类类型”?
    • 这是问题所在,因为我不确切知道它们,例如,如果类成员是类型对象,我用 genericType 处理它,如果原始我使用 is.primitive 知道,但对于“其他类型”我不知道确定我知道所有这些,然后我想以某种方式区分它们,它们如何在 java 中调用这种类型的 String、BigDecimal、Date 等?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    相关资源
    最近更新 更多