我有一个String Person ,它是类Person
的名称。
我可以从该字符串中获取类Person
吗?我需要类来调用if的静态方法。
换句话说:是否与Class.getName()
相反?
如果这根本不起作用,请告诉我。这也是一个答案。
答案 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);