如何从类名获取类

时间:2014-11-18 09:08:30

标签: grails groovy

我有一个String Person ,它是类Person的名称。 我可以从该字符串中获取类Person吗?我需要类来调用if的静态方法。

换句话说:是否与Class.getName()相反?

如果这根本不起作用,请告诉我。这也是一个答案。

4 个答案:

答案 0 :(得分:3)

Class.forName将使用包括该包在内的全名。

如果你所拥有的只是没有包的裸名,那么没有通用的方法,但在Grails域类(或其他Grails artefact)的特定情况下,你可以look it up via the grailsApplication

答案 1 :(得分:2)

class Person {
    static someMethod() {
        println 'Yep'
    }
}

如果您知道要调用的方法的名称,则可以执行以下操作...

def className = 'Person'
def clz = Class.forName(className)
clz.someMethod()

如果方法名称是动态的,你可以这样做......

def className = 'Person'
def methodName = 'someMethod'
def clz = Class.forName(className)
clz."$methodName"()

答案 2 :(得分:0)

是的,有一种方法:Class.forName(<String>)可以完成你需要的工作。请注意,您必须传递完全限定的类名(包含)。请参阅docs

答案 3 :(得分:-1)

您可以使用Class.forName()获取类。下面的代码可以帮助您

String type ="com.yourPackage.Person";
Class<Person> m = (Class<Person>) Class.forName(type);