0

I'm facing below difficulty while instantiating an interface.

public interface HostSender < T extends Serializable, R extends Serializable> {
}

public class MySender implements  HostSender< MessageRequest, MessageResponse> {  
} 

Problem:

HostSender< Serializable, Serializable> messageSender= null;

Can somebody tell me how to create object for above statement? I try with new operator in following ways but it doesn't work.

messageSender = new MySender<MessageRequest, MessageResponse> ();
messageSender = new MySender ();
Chinnu
  • 13
  • 1
  • 9
  • 2
    `` - is that a typo? Two generic type parameters shouldn't have the same name. – Eran Jan 26 '17 at 08:40
  • 2
    Try `HostSender extends Serializable, ? extends Serializable> messageSender`, `HostSender, ?> messageSender` or `HostSender< MessageRequest, MessageResponse> messageSender`. – Thomas Jan 26 '17 at 08:40
  • Possible duplicate of [Java Generics: Cannot cast List to List?](http://stackoverflow.com/questions/3246137/java-generics-cannot-cast-listsubclass-to-listsuperclass) – default locale Jan 26 '17 at 08:41
  • Sorry , the exact interface code is public interface HostSender< T extends Serializable, R extends Serializable >{} – Chinnu Jan 26 '17 at 08:45

1 Answers1

2

Your class "MySender" is not generic. Therefore, you must use this :

HostSender< ? extends Serializable, ? extends Serializable> messageSender= null;
messageSender = new MySender();
user2447161
  • 277
  • 4
  • 12