beanshell内部类

时间:2010-09-10 09:37:09

标签: java beanshell

我想使用我的java代码作为beanshell脚本,但beanshell抛出异常,说明在命名空间中找不到类。在beanshell中是不是有内部类,还是有任何其他用法?

我的脚本如下所示:

.......
.......
java code
.......
.......
MyClass m = new MyClass(); //Error here: MyClass not fount in namespace



class MyClass {

}

我在脚本中使用内部类,我在脚本中声明。

谢谢, 比拉尔

3 个答案:

答案 0 :(得分:1)

这里可能是一个愚蠢的答案,但可能是MyClass定义需要高于在文件中的用法吗? Bean shell进程脚本不是线性的吗?

快速查看文档并没有说明这一点,但以下脚本的测试当然对我有用:

class MyClass {
}
MyClass m = new MyClass();

答案 1 :(得分:0)

BeanShell不支持类定义。

您可以使用BeanShell内部类语法来实现接口:

    x = new MyInterface() {
        overriddenMethod() {
          // ....
        }
    }

v = x.overriddenMethod(); 

或者

    overriddenMethod() {
       //.....
    }

    // 'this' is a object of whatever Foo expects 
    //
    new Foo(this);

在你的情况下,我认为你最好采用脚本对象方法:

myClass() {

// methods ...

return this;

};

m = myClass(); // new instance

答案 2 :(得分:0)

其他信息:匿名内部类作为参数 无法使用,因此您需要将实现分配给变量。 (在JMeter中)

不起作用:

object.setContext(new SomeInterface(){
  //implement methods
});

使用:

SomeInterface ctx = new SomeInterface(){
    //implement methods
});
object.setContext(ctx);

希望它会帮助某人。