Nashorn: 如何选择要调用的构造函数

3

我从这个页面了解到,我可以像这样选择一个方法:

API["test(Integer[])"](1);

我该如何为构造函数做这个?具体来说,我正在尝试从Nashorn实例化一个 java.awt.Color
var highlightColor = new java.awt.Color(1, 1, 128/255, 1);

我遇到了以下错误:无法明确选择方法java.awt.Color的固定参数签名[(float, float, float, float), (int, int, int, int)],因为参数类型为[java.lang.Integer, java.lang.Integer, java.lang.Double, java.lang.Integer]。
我尝试了以下方法:
var highlightColor = new java.awt.Color["(float,float,float,float)"](1, 1, 128/255, 1);

但是这会给我带来一个错误:Caused by: :52 TypeError: null不是一个函数

3个回答

4
我们增加了这个功能,但它只能在Java 8u40及以上版本中使用。确切的语法是java.awt["Color(int, int, int)"](签名是姓氏组件的一部分,与方法名称的工作方式一致)。您可以在目前的8u40提前访问版本中尝试它(计划于2015年3月发布)。

2

您需要确保传入了4个整数(或在此情况下为浮点数),请尝试以下操作。

var highlightColor = new java.awt.Color(1.0, 1.0, 128/255, 1.0);

(int) 128 / 2550 - Mmmh mmh
然后他应该传入4个浮点数,重要的是他需要遵循构造函数的正确要求。 - Constant
你们两个都是对的,谢谢!我怎么知道谁先回答了? - David Struck

2

传递4个整数或4个浮点数

var highlightColor = new java.awt.Color(255, 255, 128, 255);

或者

var highlightColor = new java.awt.Color(1.0, 1.0, 128/255, 1.0);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接