我尝试创建一个代理,然后传递Netty中的所有trafic其他处理程序.我知道我应该管理对ByteBuf的引用,但我无法理解如何做到这一点.我的例子和例外如下.
初始化:
public class HexDumpProxyInitializer extends ChannelInitializer<SocketChannel> {
private final SslContext sslCtx;
private final String remoteHost;
private final int remotePort;
public HexDumpProxyInitializer(SslContext sslCtx, String remoteHost, int remotePort) {
this.remoteHost = remoteHost;
this.remotePort = remotePort;
this.sslCtx = sslCtx;
}
public HexDumpProxyInitializer(String remoteHost, int remotePort) {
this.remoteHost = remoteHost;
this.remotePort = remotePort;
this.sslCtx = null;
}
@Override
public void initChannel(SocketChannel ch) {
ChannelPipeline p = ch.pipeline();
if (sslCtx != null) {
p.addLast(sslCtx.newHandler(ch.alloc()));
}
p.addLast(new HexDumpProxyFrontendHandler(remoteHost, remotePort));
p.addLast(new InboundPrinterHandler());
}
}
Run Code Online (Sandbox Code Playgroud)
HexDumpProxyFrontendHandler
public …Run Code Online (Sandbox Code Playgroud) 假设System.identityHashCode(object1)==123和object1被垃圾收集。新创建的对象是否可能具有与 GC 之前object2相同的身份哈希码?object1
我写了一个startsWith(substring)扩展,它也适用于可为空的字符串。不幸的是,我的实现导致StackOverflowError,导致扩展将自身称为自身而不是String.startsWith(..)方法。
private fun String?.startsWith(sub: String): Boolean = this?.startsWith(sub)==true
Run Code Online (Sandbox Code Playgroud)
可以打电话String.startsWith(..)吗?
我正在寻找一个简单的方法,我可以传递一些字节,作为varargs,并返回一个byte [],如:
static byte[] byteArray(byte ...bytes){ return bytes;}
Run Code Online (Sandbox Code Playgroud)
到目前为止我发现了什么......
java.lang.Byte没有它
java.util.Arrays没有它
com.google.common.primitives.Bytes.toArray(..)想要一个集合
示例用例: assertThat(actualArray,is(byteArray(1,2,3,4,5)));
我有一个带有泛型参数的方法foo <T>,需要传递给Object消费条方法.为什么我们需要施展Object,一切都延伸Object?
fun <T> foo(arg:T) {
bar(arg) //doesn't compile
bar(arg as Object) //compiles only with cast to Object
}
fun bar(x:Object){}
Run Code Online (Sandbox Code Playgroud) 假设在类之外将kotlin函数定义为顶级函数。
Util.kt:
class Util {
fun bar()
}
fun foo(){}
Run Code Online (Sandbox Code Playgroud)
如何foo()在Java中调用方法?