我之前使用过这个,所以我不知道为什么这不起作用。考虑一下这段代码
public class NioServer implements Runnable {
private EventLoopGroup group;
private ServerBootstrap b;
public static final AttributeKey<Session> SESSION_KEY = new AttributeKey<>("SessionHandler.attr");
@Override
public void run() {
group = new NioEventLoopGroup();
b = new ServerBootstrap();
b.group(group)
.channel(NioServerSocketChannel.class)
.localAddress(435)
.childOption(ChannelOption.SO_KEEPALIVE, true)
.childOption(ChannelOption.TCP_NODELAY, true)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) throws Exception {
ch.pipeline().addLast("Session Handler", new SessionHandler());
}
});
}
}
AttributeKey SESSION_KEY不想工作并提供错误:
&#34;无法推断AttributeKey的类型参数&lt;&gt;原因:无法推断 type-variable(s)T(实际和形式参数列表的长度不同) 其中T是一个类型变量:T扩展在类中声明的Object AttributeKey&#34;
我不明白......我错过了什么吗?没有其他问题,但是其他问题以这种方式成功使用了AttributeKey。
功能
更新
好的,所以我已将版本降级为4.0.21 Final
,显然AttributeKey<>("")
已被弃用,但我找不到任何有关此内容的更多信息。任何人都知道4.1.0
版本中替换/替换它的人吗?顺便说一句,它适用于4.0.21 Final
。
答案 0 :(得分:1)
好的。引用用户&#39; Mics&#39;:
简短回答:netty 4.1中没有AttributeKey(字符串),使用 AttributeKey.valueOf(字符串)。附加信息: github.com/netty/netty/issues/1824
感谢您的回答。