java - 获取类属性名称、其类型以及如果是集合则获取集合的泛型类型

标签 java xml xpath

public class Table{
private Long id = 1;
private String name;
List<Terms> terms;
Map<String,Address>
//getters and setters
}

我需要做的是,我需要将我的类表与数据库表链接起来,上面类中的每个元素都是数据库表中的一个概念,并且我根据我的 xml 和相关数据库表拥有 Java 类的完整结构DB应该是什么最好的方法。 根据我的理解,我现在能想到的是

  1. 使用反射来获取字段名称并应用我的业务逻辑
  2. 使用我的 xml 的 XPath 并使用 XPath 直接链接每个概念

  3. 每次从 DB 和 XML 获取值并使用一些中介逻辑链接它。

如果可能,请建议并提供一些代码虚拟代码

最佳答案

    You can try with below example:

    Iterator<Table> iterator=tableList.iterator();
    boolean foundConcept=false;
    while(iterator.hasNext())
    {
        foundConcept=false;
    Table table=iterator.next();
    String conceptName=table.getConceptDetails().getName();
    Field fieldArr[]=Table.getClass().getDeclaredFields();
    List<Field> fields=Arrays.asList(fieldArr);
     Iterator<Field> iterator1 =fields.iterator();
    int i=0;
    while(iterator1.hasNext())
    {
    Field field=iterator1.next();
    field.setAccessible(true);
    System.out.println(field.getName()+"  @   "+field.getType());
    if(field.getName().equalsIgnoreCase(conceptName) &&     String.class.isAssignableFrom(field.getType()))
    {
    foundConceptMap.put(conceptName, (field.get(Table)).toString());
    foundConcept=true;
    break;
    }
    else
       {
       Type type = field.getGenericType();
    if (type instanceof ParameterizedType) {
    ParameterizedType pType = (ParameterizedType)type;
    System.out.print("Raw type: " + pType.getRawType() + " - ");
    System.out.println("Type args: " + pType.getActualTypeArguments()[0]);
    if("java.util.List".equalsIgnoreCase(pType.getRawType().getTypeName()))
    {
        String classWithPackage=pType.getActualTypeArguments()[0].getTypeName();
        String className="";
        if(classWithPackage.contains("."))
        {
            className=classWithPackage.substring(classWithPackage.lastIndexOf(".")+1);
        }
        else
        {
        className=classWithPackage;
        }
        System.out.println(className);

        if("Terms".equalsIgnoreCase(className))
        {
            List<Terms> list=Table.getTerms();
            setTerms(list, foundConceptMap, conceptName);
        }
    }
    }
    }

关于java - 获取类属性名称、其类型以及如果是集合则获取集合的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40761966/

相关文章:

php - 无法从 Soap 响应中提取数据

xml - XPath通过id属性获取另一个属性

java - 创建对称矩阵java VRP

android - 删除导航菜单中的大间隙

xml - Delphi 中是否有将 XML 日期和时间转换为 TDateTime 的函数

android - XmlPullParser 处理多维重复元素

python - 您如何使用 Selenium 检查属性是否存在并获取其值(如果存在)?

java - 使用 RequestDispatcher 发送变量值时出现问题

java - 使用 JSTL 将长时间戳格式化为日期

java - 如何使用固定宽度的 Swing FlowLayout?