Делаю поддержку картинок, но возникла некая сложность.
Если определить в библиотеке interface JecpImage {
int getWidth(); int getHeight();
}
То мы не сможем из общего проекта создать новый экземпляр класса, потому что на этом уровне мы имеем только интерфейс.
JecpImage img = new JecpImage("image.png");
Хорошо, превращаем интерфейс в класс и добавляем необходимые нам конструкторы.
public class JecpImage {
public JecpImage(String res) throws IOException { }
public JecpImage(InputStream is) throws IOException { }
public int getWidth() { return 0; };
public int getHeight() { return 0; };
}
Теперь мы можем вызывать JecpImage img = new JecpImage("image.png");
Но это тоже не вариант, потому что нам надо в каждой библиотеке для конкретной платформы "подменить" эти методы и конструкторы на свои. Так не получается, потому что надо при вызове конструктора явно указать конечный класс.
Привести к нужному типу мы тоже не можем, так как инициализируется самый базовый класс.
Сделать класс абстрактным мы тоже не можем, потому что при вызове конструктора нам создастся анонимный класс.
Есть у кого идеи?
__________________