当前位置: 首页 > 知识库问答 >
问题:

如何在没有包的情况下真正获得类的名称?

蒲坚
2023-03-14
class AProperlyAndDescriptivelyNamedClass {
    class First {...}
    class Next {...}
    class Last {...}
}

class AnotherTopLevelLongNamedClass {
    class First {...}
    class Next {...}
    class Last {...}
}

我知道我可以获得包名并从完整的类名中去掉相应数量的字符,但我猜已经有人这么做了?

共有1个答案

林绪
2023-03-14

我猜您需要实现这样一个简短的方法:

private static String getSimpleName(Class<?> clazz) {
    String simpleName = clazz.getSimpleName();
    if (clazz.isMemberClass()) {
        Class<?> enclosingClass = clazz.getEnclosingClass();
        simpleName = enclosingClass.getSimpleName() + "." + simpleName;
    }
    return simpleName;
}

然后

String simpleName = getSimpleName(AnotherTopLevelLongNamedClass.First.class);
System.out.println(simpleName);

将输出

AnotherTopLevelLongNamedClass.First
 类似资料:
  • 问题内容: 在C#中,我们有和有或没有命名空间(包在Java世界中)得到一个类型(类在这种情况下)的名称。 java等于什么? 显然,有比手动使用和删除软件包名称更好的方法。 问题答案: 返回源代码中给定的基础类的简单名称。如果基础类是匿名的,则返回一个空字符串。 数组的简单名称是组件类型的简单名称,后接“ []”。特别是其组件类型为匿名的数组的简单名称为“ []”。 它实际上是从名称中删除软件包

  • 有没有办法在Spring MVC中获取当前会话,但不是通过请求。通常,我们所做的是在操作/控制器类方法中获取请求。从这个请求中,我们逐个请求获得会话。getSession()。但是,有没有办法在没有此请求对象的情况下获取此会话? 我的动机是,在一个实用程序类中,我需要访问会话中设置的值,而这个实用程序类方法是从控制器类的50多个方法中访问的。如果我必须从请求中获得会话,那么我需要更改所有这50个位

  • 我想查看项目中的所有类,当我找到一个从“City”派生的类时,我想创建一个该类型的新对象并将其添加到列表中。这允许我添加功能,而无需更新列表。最重要的是,我想在不使用任何库的情况下完成它。我已经找到了类似的主题,但他们使用了org。反思。我希望避免以下情况:

  • 我正在尝试安装一个没有依赖项的python模块。 我跑: 但是这个安装依赖项,任何想法怎么能做到这一点?

  • 问题内容: 我怎么能包括为没有MANIFEST.in文件? 我的setup.py看起来像这样: 版本: 我就是无法加入。 还是此博客文章仍然正确? http://blog.codekills.net/2011/07/15/lies,-more-lies-and-python-packaging- documentation-on– package_data-/ 不过,在过去的一个小时中,我了解到这

  • 我使用了,但对于当前的问题,它没有帮助。我希望能够创建特定于项目的包: 我尝试了多种方法,但如何获得