首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >beanshell内部类

beanshell内部类
EN

Stack Overflow用户
提问于 2010-09-10 17:37:09
回答 3查看 3.3K关注 0票数 1

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

我的脚本如下所示:

代码语言:javascript
运行
复制
.......
.......
java code
.......
.......
MyClass m = new MyClass(); //Error here: MyClass not fount in namespace



class MyClass {

}

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

谢谢,比拉尔

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-21 11:19:59

也许这是一个愚蠢的答案,但会不会是MyClass定义需要高于它在文件中的用法呢?bean shell进程脚本不是线性的吗?

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

代码语言:javascript
运行
复制
class MyClass {
}
MyClass m = new MyClass();
票数 1
EN

Stack Overflow用户

发布于 2013-01-06 23:07:23

BeanShell不支持类定义。

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

代码语言:javascript
运行
复制
    x = new MyInterface() {
        overriddenMethod() {
          // ....
        }
    }

v = x.overriddenMethod(); 

代码语言:javascript
运行
复制
    overriddenMethod() {
       //.....
    }

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

在您的情况下,我认为您最好使用脚本化对象方法:

代码语言:javascript
运行
复制
myClass() {

// methods ...

return this;

};

m = myClass(); // new instance
票数 0
EN

Stack Overflow用户

发布于 2016-09-14 21:29:54

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

不起作用:

代码语言:javascript
运行
复制
object.setContext(new SomeInterface(){
  //implement methods
});

作品:

代码语言:javascript
运行
复制
SomeInterface ctx = new SomeInterface(){
    //implement methods
});
object.setContext(ctx);

希望它能帮助到某个人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3683562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档