beanshell 内部类

发布于 2024-09-18 22:46:36 字数 312 浏览 7 评论 0原文

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

我的脚本如下所示:

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



class MyClass {

}

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

谢谢, 比拉尔

i wanted to use my java code as beanshell script but beanshell throws Exception saying class not found in namespace. Isn't there inner class in beanshell or does it have any other usage?

my script looks like here:

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



class MyClass {

}

i use the inner class in script, which i declare in the script.

Thanks,
Bilal

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

满栀 2024-09-25 22:46:36

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

快速浏览一下文档并不能说明这一点,但以下脚本的测试对我来说确实效果很好:

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

Maybe a silly answer here but could it be that the MyClass definition needs to be above its usage in the file? Doesn't bean shell process scripts linearly?

A quick look in the docs doesn't spell this out but tests of the following script certainly works fine for me:

class MyClass {
}
MyClass m = new MyClass();
零時差 2024-09-25 22:46:36

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

Class definition is not supported by BeanShell.

You can use BeanShell inner class syntax to implement an interface:

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

v = x.overriddenMethod(); 

Or

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

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

In your case I think you are better off going with the scripted object approach:

myClass() {

// methods ...

return this;

};

m = myClass(); // new instance
垂暮老矣 2024-09-25 22:46:36

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

不起作用:

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

起作用:

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

希望它能帮助别人。

Additional information: the anonymous inner class as argument can not use, so you need to assign your implementation to a variable. (In JMeter)

Not works:

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

Works:

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

Hope it will help out someone.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文