将像 string 这样的基本类型分配给any
type 是绝对合法的。问题出在其他地方。
由于您没有以用于事件文件的形式传递字符串,因此会出错。一旦您查看parseType
使用方法的一个示例,解码错误消息就变得非常简单。这给出了一些提示,为什么它真的在论点中寻找开场白。
你的问题简单地说:
package com.apama.test;
event Evt{}
monitor Foo {
action onload() {
Evt e1;
// handleResponse(any.parseType("string", "World!")); // #1 Invalid argument. Doesn't work
handleResponse(any.parseType("com.apama.test.Evt", "com.apama.test.Evt()")); // #2
handleResponse("World!"); // #3
}
action handleResponse(any response){
log "Hello " + response.toString() ;
}
}
印刷:
com.apama.test.Foo [1] Hello any(com.apama.test.Evt,com.apama.test.Evt())
com.apama.test.Foo [1] Hello any(string,"World!")
虽然取消注释#1
会给出如下所示的错误:
ParseException - Error in parseType() method: Unable to parse string: missing opening quote
此外,如果您将格式正确但不存在的事件传递给parseType
方法,它将引发错误,指出找不到类型。
ParseException - Error in parseType() method: Unable to find type 'com.apama.test.Evt2'