Я использую дженерики для повторного использования моего кода и использования внедрения зависимостей.
У меня есть два интерфейса: DataParserImplementation и ObjectImplementation. У меня есть классы, которые реализуют каждый: SalesRepbyId реализует DataParserImpl (он анализирует данные в объекты и помещает эти объекты в коллекции). SalesRep реализует Objectimpl (это объект для определенного набора данных).
Я пытаюсь получить его, чтобы я мог выбрать тип Objectimpl, который я использую в своем классе SalesRepbyId, чтобы я мог удалить связь.
Я знаю, что мне сказали, что есть метод отражения, метод, который мне нужно использовать. Я также слышал о «фабричном шаблоне» и «файле свойств», который позволяет мне делать то, что я хочу. Многое из этого очень запутанно, поэтому, пожалуйста, объясните мне, что мне пять лет.
Вот код с которым он перестает работать:
РЕДАКТИРОВАТЬ: ревизии на основе комментариев: я хочу указать тип DataObject (D), который мой класс использует, передавая его через конструктор через общий интерфейс и используя универсальные типы. Когда я пытаюсь использовать его вместо конкретного реализующего класса, я получаю ошибку. Я не могу найти ничего об этой ошибке.
public class SalesRepbyId<D extends ObjectImplementation> implements DataParserImplementation<Map<String,D>> {
private FileParserImplementation<ArrayList<String[]>> FileParser;
private D dataObject;
public SalesRepbyId(FileParserImplementation<ArrayList<String[]>> FileParser,D d){
this.FileParser = FileParser;
this.dataObject = d;
}
@Override
public Map<String, D> Parse() {
try{
//reads the file and returns an array of string arrays
ArrayList<String[]> Salesrep_contactlist = FileParser.ReadFile;
//here it still says "Unknown Class." that's the problem
Map<String, dataObject> SalesrepByIdMap = new HashMap<>();
//I want to be able to put in any class that implements
//dataObject into this class and have it run the same way.