Исключение при инициализации экземпляра Java в Guice - PullRequest
0 голосов
/ 15 января 2019

Я создал фиктивные классы, чтобы объяснить мою проблему. Рассмотрим этот класс Java, который есть в моем проекте.

import com.google.inject.Inject;

public class ExampleClass<T> {

private final Class<T> classType;
private ObjectSerializer objectSerializer;

//Constructor
@Inject
public ExampleClass(final Class<T> classType, final ObjectSerializer objectSerializer){
  this.classType = classType;
  this.objectSerializer = objectSerializer;
}

public T randomMethod(String hashKey, String rangeKey){
  return objectSerializer.deserialize(dataBaseHelper.getData(hashKey, rangeKey), classType);
}

Предполагая, что я хочу инициализировать класс для Type ExamplePojo (T - ExamplePojo), я делаю следующее для инициализации экземпляра Singleton в Guice,

public class ExampleModule extends AbstractModule{

@Provides
@Singleton
public ExampleClass<ExamplePojo> provideExampleClass(ObjectSerialization objectSerialization){
  return new ExampleClass<>(ExamplePojo.class, objectSerialization);
}
}

Когда я пытаюсь инициализировать свой сервер, я получаю следующее исключение.

 [java] 1) java.lang.Class<T> cannot be used as a key; It is not fully specified.
 [java]   at com.service.ExampleClass.<init>(ExampleClass.java:XX)
            ...
            ...

 [java]
 [java] 1 error
 [java]     at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:466)
 [java]     at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:155)
 [java]     at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)
 [java]     at com.google.inject.Guice.createInjector(Guice.java:99)
 [java]     at com.google.inject.Guice.createInjector(Guice.java:73)
 [java]     at com.google.inject.Guice.createInjector(Guice.java:62)
 [java]     at com.amazon.f1service.F1Service.main(F1Service.java:33)
...