在Java中获取相对的内部类名


package u.v;
class x {
    static class xx {
        static class xxx { }
    }
}

虽然我可以得到内部类的规范("绝对")名称

public class a{
    public static void main(String[] args) {
        System.out.println(x.xx.xxx.class.getCanonicalName());   //u.v.x.xx.xxx
    }
}

,我还可以得到类名的最后一个组件

    public static void main(String[] args) {
        System.out.println(x.xx.xxx.class.getSimpleName());   //xxx
    }

如何优雅地获取相对类名?

Utils.relativeClassName(x.xx.xxx.class, x.class);   //xx.xxx

应该使用下面的字符串操作:xxx.class.getCanonicalName().substring(x.class.getCanonicalName().length + 1)

+1表示最后一个外部类名与感兴趣类名之间的.(点)。

可以使用这个函数。+1表示额外的.

public static String getRelativeClassName(Class<?> inner, Class<?> outer) {
  int length = outer.getCanonicalName().length();
  return inner.getCanonicalName().substring(length+1);
}

相关内容

  • 没有找到相关文章

最新更新