简体   繁体   中英

Java — passing generic parameters

I am trying to write a method that takes in any subclass of MyInterface as a parameter, but getting syntax errors.

public Map<String, List<T extends MyInterface>> makeMap(List<T extends MyInterface>) {

  Map<String, List<T extends MyInterface>> myMap = ...

  return myMap;

}

This syntax is not valid. The signature gives the error "misplaced construct". But, the idea is that I can pass any subclass of MyInterface inn place of T. Can this be done in Java? how?

You are mixing up the concepts of declaring a generic type and referring to that generic type. Assuming that you want the method to be generic, declare the generic type parameter before the return type, then refer to it plainly as T elsewhere:

//      Declaration                            ref              ref
public <T extends MyInterface> Map<String, List<T>> makeMap(List<T>) {
  //              ref
  Map<String, List<T>> myMap = ...

  return myMap;

}
public <T extends MyInterface> Map<String, List<T>> makeMap(List<T> myList) {

More on generic methods here

I also noticed that in your original method declaration, you didn't have a variable defined for your method parameter.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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