[英]Passing abstract/generic object to method
我有一个抽象类:
public abstract class AdvancedModel<T, K>
有两个子类:
public class TrackModel extends AdvancedModel<Track, Toptracks>
和
public class ArtistModel extends AdvancedModel<Artist, Topartists>
在一个单独的名为“评估”的类中,我希望有一个方法可以接受这些对象中的任何一个并对其进行处理。 有没有一种方法可以使用泛型类型进行操作,还是我必须使用两个不同的类作为参数来两次使用相同的方法?
编辑
我试过了
private <T, K> float runModel(AdvancedModel<T, K> testEngine)
当我更早地声明对象时,这似乎起作用:
AdvancedModel<Track, Toptracks> name = new TrackModel(10, 17);
float result = runModel(name);
但是,这稍后会导致其他方法出现问题。 例如,我有另一种方法,我想从K调用getArtist()或getTrack(),这取决于K是Toptracks还是Topartists?
您应该将类型参数添加到方法声明中,如下所示:
public <T, K> void doStuffWithAdvancedModel(AdvancedModel<T, K> model) {
// do stuff here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.