Java 8 здесь. У меня есть следующий общий класс:
public class Memory<T> {
private String moniker;
private Date timestamp;
private T data;
// constructors, getters & setters, etc.
}
Я пытаюсь создать неуниверсальный MemoryFactory
, например, так:
public class MemoryFactory {
public Memory<?> createMemory(Object data, String moniker) {
Date now = new Date();
return new Memory<?>(moniker, now, data);
}
}
Однако я получаю ошибку компилятора в операторе возврата для этого <?>
использования:
Тип подстановочного знака '?' не может быть создан непосредственно
Итак, еще раз, я хочу, чтобы MemoryFactory
не был универсальным, и разрешите мне сделать следующие вызовы:
Memory<Fizz> fizzMemory = memoryFactory.createMemory(new Fizz(), "fizz1");
Memory<String> strMemory = memoryFactory.createMemory("SOMETHING", "str1");
Memory<Buzz> buzzMemory = memoryFactory.createMemory(new Buzz(11, true), "buzz1");
Что мне нужно сделать, чтобы выполнить это и исправить ошибку компилятора?