ジェネリック引数に現在のクラスの型を使用する方法はありますか? たとえば、私はこのクラスを持っていますServiceNode
public final class ServiceNode<S extends NetworkService> {
private final S service;
private final Client client;
private Object attachment;
public ServiceNode(S service, Client client) {
this (service, client, null);
}
public ServiceNode(S service, Client client, Object attachment) {
this.service = service;
this.client = client;
this.attachment = attachment;
}
public S service() {
return service;
}
....
}
これは抽象クラスの一部ですNetworkService
public abstract class NetworkService {
private final Set<ServiceNode<?>> registeredNodes = new HashSet<>();
public final void register(ServiceNode<?> node) {
registeredNodes.add(node);
}
...
}
基本的に、クラスからワイルドカード引数を削除しServiceNode
、NetworkService
クラスが拡張している型に置き換える方法はありますかNetworkService