0

我在包层次结构中有一组 groovy 脚本。我有 1 个主要脚本,我想从中调用其他人。例如,我有这些脚本(其中包含同名的公共类/接口):

package.MainScript
package.MyInterface;

package.utils.MyInterfaceImpl1 //implements MyInterface
package.utils.MyInterfaceImpl2 //implements MyInterface

有没有办法在编译时不知道调用的类名的情况下从另一个脚本调用一个脚本?我的意思是做一些像动态类加载这样的事情:

class MainScript {
  public static void main (String[] args) {
      MyInterface instance = Class.forName("package.utils.Util1");
  }
}
4

1 回答 1

1

是的!Groovy 是一种动态语言。您可以动态创建类实例

package.MyInterface
class MyInterfaceImpl1 {
    def greet() {
        "Hello"
    }    
}

package.MyInterface
class MyInterfaceImpl2 {
    def greet() {
        "Hi!"
    }   
}

def name = 'MyInterfaceImpl1' // Choose whatever you want at runtime
def className = Class.forName("MyInterface.$name")
def instance = className.newInstance()
assert instance.greet() == 'Hello'
于 2012-12-10T13:18:32.740 回答