[英]Passing abstract/generic object to method
I have an abstract class: 我有一个抽象类:
public abstract class AdvancedModel<T, K>
that has two subclasss: 有两个子类:
public class TrackModel extends AdvancedModel<Track, Toptracks>
and 和
public class ArtistModel extends AdvancedModel<Artist, Topartists>
In a seperate Class called Evaluation, I want to have a method that takes in either of these objects and do stuff with it. 在一个单独的名为“评估”的类中,我希望有一个方法可以接受这些对象中的任何一个并对其进行处理。 Is there a way to do this using the generic type, or will I have to have the same method twice using the two different classes as parameters?
有没有一种方法可以使用泛型类型进行操作,还是我必须使用两个不同的类作为参数来两次使用相同的方法?
EDIT 编辑
I tried 我试过了
private <T, K> float runModel(AdvancedModel<T, K> testEngine)
which seems to work when i declare the objects earlier like: 当我更早地声明对象时,这似乎起作用:
AdvancedModel<Track, Toptracks> name = new TrackModel(10, 17);
float result = runModel(name);
This is however causing issues with other methods later on. 但是,这稍后会导致其他方法出现问题。 For example, I have an other method which i want to either call getArtist() or getTrack() from K, depending on whether K is Toptracks or Topartists?
例如,我有另一种方法,我想从K调用getArtist()或getTrack(),这取决于K是Toptracks还是Topartists?
You should add type parameters to your method declaration as following: 您应该将类型参数添加到方法声明中,如下所示:
public <T, K> void doStuffWithAdvancedModel(AdvancedModel<T, K> model) {
// do stuff here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.