如何从 Nashorn 隐藏 methods/fields

How to hide methods/fields from Nashorn

是否可以从 NashornScriptEngine 中隐藏 methods/fields 例如它只能调用 methods/fields 如果特定注释与之相关联。

我确实找到了另一个与此类似的问题,但不幸的是它是针对 Rhino how do I hide a class method from rhino script engine

虽然我确实尝试扩展一些 类 但它们都是最终的,所以运气不好。

不,nashorn 不支持隐藏 Java class 或对象的特定 public 方法或 public 字段。但是,您可以通过 JSObject 实现 (https://docs.oracle.com/javase/8/docs/jdk/api/nashorn/jdk/nashorn/api/scripting/JSObject.html) 包装 Java 对象并过滤掉特定方法 and/or 字段。但请注意,此方案不适用于 Java classes - 除非您覆盖全局范围内的 Java.type 函数和特定 classes 的 return 包装对象。