当前位置: 首页 > 面试题库 >

仅靠简单名称来反思地找到一个类

印季
2023-03-14
问题内容

我想知道是否有任何给定的函数可以让我自省一个类,而不必编写包含该类的包。

例如,我想看一看 Integer 类的方法和超类,为此我必须指定该类所在的包。这将是“ java.lang.Integer”

而不是这样做,我只想键入类名称以显示该类的信息。就像这个“整数”

无论程序位于何处,如何使我的程序仅检查类名?


问题答案:

Java不会阻止您创建自己的my.company.Integer类和my.other.company.Integer类,因此它如何无法知道哪个Integer类是
正确的 类。

我可以建议的答案最接近的是,创建一个预定义的软件包列表,在其中您要搜索该类,并继续尝试每个软件包,直到找到您的类为止。

所以像这样:

class ClassFinder{
  public static final String[] searchPackages = {
    "java.lang",
    "java.util",
    "my.company",
    "my.company.other" };

  public Class<?> findClassByName(String name) {
    for(int i=0; i<searchPackages.length; i++){
      try{
        return Class.forName(searchPackages[i] + "." + name);
      } catch (ClassNotFoundException e){
        //not in this package, try another
      } catch (...){
        //deal with other problems...
      }
    }
    //nothing found: return null or throw ClassNotFoundException
    return null;
  }
}


 类似资料:
  • 大话来自一个程序员的反思 程序员大军鱼龙混杂,水平的高低无法简单的从一个功能完成情况来评定,同样一个需求,功能都可以完成,但是不同程序员完成质量会不一样,完成质量的好坏需要从多方面评定,可以参考这些条件:易维护,易拓展,高可用,高稳定,高性能,安全性,容错,风控 洞察身边的程序猿,可以归类出这几种类型: 理论型,理论能力很强,对前沿技术略有了解,性格比较强势,需求分析和方案设计头头是道,对自己的设

  • 我正在尝试部署我的spring应用程序。以下是pom的副本。xml文件。 以下是申请的副本。属性文件。 我得到的错误跟踪如下。 我被夹在中间。我几乎没试过什么东西。因为提供entityManager的hibernate JPA启动器是从pom中删除hibernate核心和hibernate实体管理器的。xml也是如此。但我也犯了同样的错误。除此之外,我还创建了自定义datasoruce,如下所示。

  • 问题内容: 在Java中,这些之间有什么区别: 我已经多次检查过Javadoc,但这从来不能很好地解释它。我也进行了测试,但没有反映出调用这些方法背后的任何实际含义。 问题答案: 如果不确定某件事,请尝试先编写测试。 我这样做: 印刷品: 最后一个块中有一个空条目,其中返回一个空字符串。 结果是: 该 名称 是您愿意使用动态加载与类,例如,调用的名称与默认。在一定范围内,所有类都有唯一的名称。 该

  • 我正在从Angular.io学习这个教程 正如他们所说,我创建了hero.spec.ts文件来创建单元测试: 找不到名称“Expect”。 我该怎么做才能修好它?

  • 问题内容: 我有一个具有Map的域对象: 当我序列化对象时,得到以下信息: 该地图的键是一个自定义对象: 因此,我不确定在反序列化对象时如何解决这个问题,我将不断纠正: 有人能帮我可以了解如何解决此问题,如果我 不 能够访问域对象要修改? 问题答案: 默认情况下,Jackson尝试将Java Maps序列化为JSON对象(键/值对),因此Map key对象必须以某种方式序列化为String;并且必