代码之家  ›  专栏  ›  技术社区  ›  Thomas Keller g00dy

获取类的类名

  •  2
  • Thomas Keller g00dy  · 技术社区  · 8 年前

    Groovy初学者,来自Java/Kotlin,如何获得类的(匿名)实现的类名?

    失败的尝试:

    abstract class Foo {
        String name() { this.class.simpleName }
    }
    
    abstract class Foo {
        String name() { return this.class.simpleName }
    }
    
    abstract class Foo {
        String name() { return getClass().getSimpleName() }
    }
    
    abstract class Foo {
        String name() { this.metaClass.classNode.nameWithoutPackage }
    }
    

    所以很明显,我似乎给了一些类实例一个默认名称。我想“如果类名不起作用,让我们尝试单独命名”如下:

    abstract class Foo {
        private final AtomicInteger counter = new AtomicInteger(0)
        String name() { "number " + this.counter.incrementAndGet() }
    }
    

    但这也行不通,因为 counter is not a property of groovy.lang.Binding .

    这都是在Jenkins管道的背景下我试图写的。。。为什么这么难?

    1 回复  |  直到 8 年前
        1
  •  5
  •   Jeff Scott Brown    8 年前

    你可能想要这个。。。

    abstract class Foo {
        String name() { this.class.name }
    }