简体   繁体   English

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

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

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