Я вызываю метод Java от io.netty.bootstrap.BootStrap
что имеет следующую подпись:Избегайте `Boolean.box`
public <T> B option(ChannelOption<T> option, T value)
Я использую следующий код для вызова метода:
b.option(ChannelOption.SO_KEEPALIVE, true);
И это не скомпилируется со следующей погрешностью:
Error:(57, 30) type mismatch;
found : io.netty.channel.ChannelOption[Boolean]
required: io.netty.channel.ChannelOption[Any]
Note: Boolean <: Any, but Java-defined class ChannelOption is invariant in type T.
You may wish to investigate a wildcard type such as `_ <: Any`. (SLS 3.2.10)
b.option(ChannelOption.SO_KEEPALIVE, true); // (4)
^
Я не совсем понимаю w это говорит, но я понимаю, что жалуется на получение логического значения, поскольку он был параметризован Any
вместо Boolean
. Так что я попытался следующий код и он работает :
b.option(ChannelOption.SO_KEEPALIVE, Boolean.box(true));
компилируется и работает. Есть ли способ сделать это красивее без вызова box
?
Может ли кто-нибудь перевести эту ошибку компилятора?
спасибо.
Для записи, когда вы отправляете сообщение в ML, вы должны указать, что вы перекрестно размещены в SO, чтобы избежать дублирования усилий. –
Прошу прощения за это и поблагодарить вас за помощь. – simao