0
Учитывая следующее в Java:Как я могу создать подтип `I`, который бы обернул другие подтипы` I`?
public interface Reply<T> {
T data();
}
public class StatusReply implements Reply<String> {
private final String status;
public StatusReply(String status) {
this.status = status;
}
@Override
public String data() {
return status;
}
}
Я хочу, чтобы иметь возможность сделать это в Scala:
class PassthroughReply[R <: Reply[_]](val reply: R)
extends Reply[T] { // won't compile, `T` type not found
override
def data[T : Reply]: T = reply.data
}
val statusReply = new StatusReply("OK")
val passthroughReply = new PassthroughReply[SatusReply](statusReply)
passthroughReply.data // Should return "OK"
То, что я хочу, что data
в экземпляре PassthroughReply
, должны иметь тот же введите data
его обернутого подтипа Reply
.
Если я это сделаю, мне нужно будет передать тип, используемый StatusReply, например. 'new PassthroughReply [String] (новый StatusReply (« OK »)). Я хочу, чтобы PassthroughReply мог просто вывести тип, используемый StatusReply автоматически. –
Тип PassthroughReply может быть выведен из параметров, которые вы используете для его построения. Попробуйте новый PassthroughReply (новый StatusReply («ОК»)) – Upio
Это действительно сработало! Спасибо! –