繁体   English   中英

将抽象/通用对象传递给方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM