2016-03-17 4 views
2
public abstract class AbstractRESTClientService<E extends IDable<String>> 
    implements GenericService<E, String> { 


    private Class<E> classType; 
    private Class<E[]> classArray; 
    private String controllerPath; 

    public AbstractRESTClientService(final Class<E> classType, 
     final Class<E[]> classArray, 
     final String controllerPath) { 
      this.classType = classType; 
      this.classArray = classArray; 
      this.controllerPath = controllerPath; 
      this.webService = new GenericWebClientService<E>(); 
     } 

    // ... other methods 
} 

Есть ли способ манипулировать ClassType в classArray, так что мне не нужно проходить в classArray в качестве параметра?Finesse Класс <E> в класс <E[]>

+0

в теории можно сделать 'Class arrClazz = (класс )) Array.newInstance (clazz, 0) .getClass(); ', но я не уверен, что это лучший подход – user902383

ответ

1

Ненавижу думать, что это лучший способ сделать это, но вот как я справился с этим.

public abstract class AbstractRESTClientService<E extends IDable<String>> 
    implements GenericService<E, String> { 


private Class<E> classType; 
private Class<E[]> classArray; 
private String controllerPath; 

@SuppressWarnings("unchecked") 
public AbstractRESTClientService(final Class<E[]> classArray, 
    final String controllerPath) { 
     this.classType = (Class<E>) classArray.getComponentType(); 
     this.classArray = classArray; 
     this.controllerPath = controllerPath; 
     this.webService = new GenericWebClientService<E>(); 
    } 

    // ... other methods 
} 
Смежные вопросы