1

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

我的脚本如下所示:

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



class MyClass {

}

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

谢谢, 比拉尔

4

3 回答 3

1

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

快速查看文档并没有说明这一点,但以下脚本的测试对我来说确实很好:

class MyClass {
}
MyClass m = new MyClass();
于 2010-09-21T03:19:58.743 回答
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
于 2013-01-06T15:07:23.037 回答
0

附加信息:匿名内部类作为参数不能使用,因此您需要将您的实现分配给一个变量。(在 JMeter 中)

不工作:

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

作品:

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

希望它会帮助某人。

于 2016-09-14T13:29:54.130 回答