代码之家  ›  专栏  ›  技术社区  ›  Netherwire

如何确定Java类是匿名的吗?

  •  0
  • Netherwire  · 技术社区  · 6 年前

    我有这样的密码:

    package x.y.z;
    
    public class Test
    {
        private static class MyRunnable implements Runnable
        {
            @Override
            public void run()
            {
                System.out.println("World");
            }
        }
    
        public static void main(String[] args)
        {
            final Runnable r1 = new Runnable() {
                @Override
                public void run()
                {
                    System.out.println("Hello");
                }
            };
    
            final Runnable r2 = new MyRunnable();
    
            r1.run();
            r2.run();
        }
    }
    

    我在做一些代码分析模块,我想证明 r1 是一个匿名类实例,并且 r2 不是。它们都是具有相同基类或接口的有效对象。我该怎么做?

    精化 :正在加载所有类,因此不需要分析文本。

    1 回复  |  直到 6 年前
        1
  •  6
  •   T.J. Crowder    6 年前

    这里有 isAnonymousClass method Class 因此:

    if (r1.getClass().isAnonymousClass()) {
        // ...