对于方法public Value asValue(Object hostValue),我无法强制使用GraalVM javadoc中的示例
Basic Examples: The following assertion statements always hold:
Context context = Context.create();
assert context.asValue(null).isNull();
assert context.asValue(42).isNumber();
assert context.asValue("42").isString();
assert context.asValue('c').isString();
assert context.asValue(new String[0]).hasArrayElements();
assert context.asValue(new ArrayList<>()).isHostObject();
assert context.asValue(new ArrayList<>()).hasArrayElements();
assert context.asValue((Supplier) () -> 42).execute().asInt() == 42;因为一些断言失败(hasArrayElements()和Functional Interface):
我的java类:
$ cat Test.java
import java.util.ArrayList;
import java.util.function.Supplier;
import org.graalvm.polyglot.Context;
import org.graalvm.polyglot.Value;
public class Test {
public static void main( String[] args ) {
try ( Context context = Context.create() ) {
assert context.asValue(null).isNull();
assert context.asValue(42).isNumber();
assert context.asValue("42").isString();
assert context.asValue('c').isString();
assert context.asValue(new String[0]).hasArrayElements() : "String[].hasArrayElements() failed";
assert context.asValue(new ArrayList<>()).isHostObject();
assert context.asValue(new ArrayList<>()).hasArrayElements();
assert context.asValue((Supplier) () -> 42).execute().asInt() == 42;
}
}
}结果:
$ /opt/graalvm-ce-java11-20.0.0/bin/javac Test.java; /opt/graalvm-ce-java11-20.0.0/bin/java -ea Test
Exception in thread "main" java.lang.AssertionError: String[].hasArrayElements() failed
at Test.main(Test.java:14)我做错了什么?..
发布于 2020-04-11 16:40:42
在最好的情况下,文档是过时的,在最坏的情况下,这是一个错误。你应该为松露提交一个问题:https://github.com/oracle/graal/issues
https://stackoverflow.com/questions/61147888
复制相似问题