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

时间:2017-04-13 21:38:25

标签: java generics

我有一个抽象类:

public abstract class AdvancedModel<T, K>

有两个子类:

public class TrackModel extends AdvancedModel<Track, Toptracks>

public class ArtistModel extends AdvancedModel<Artist, Topartists>

在一个名为Evaluation的独立类中,我希望有一个方法可以接收这些对象中的任何一个并使用它做任何事情。有没有办法使用泛型类型,或者我必须使用两个不同的类作为参数两次使用相同的方法?

修改

我试过

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?

1 个答案:

答案 0 :(得分:3)

您应该将类​​型参数添加到方法声明中,如下所示:

public <T, K> void doStuffWithAdvancedModel(AdvancedModel<T, K> model) {
    // do stuff here
}