Вниз  JECP
- 4.02.2014 / 06:19
samodelkin
  Пользователь

samodelkin 
Сейчас: Offline
dzanis, хм, если бы это было на андроид, то я бы воспользовался.
- 4.02.2014 / 06:34
DominaN
  Пользователь

DominaN 
Сейчас: Offline
как же все таки JavaDoc уродует код...
- 4.02.2014 / 07:45
samodelkin
  Пользователь

samodelkin 
Сейчас: Offline
DominaN, зато наглядно показывает функционал класса.
- 4.02.2014 / 10:41
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
DominaN, как же всё-таки JavaDocs сложно писать и поддерживать...
__________________
 let live
- 7.02.2014 / 19:47
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Делаю поддержку картинок, но возникла некая сложность.
Если определить в библиотеке interface JecpImage {
  int getWidth(); int getHeight();
}
То мы не сможем из общего проекта создать новый экземпляр класса, потому что на этом уровне мы имеем только интерфейс.
JecpImage img = new JecpImage("image.png");

Хорошо, превращаем интерфейс в класс и добавляем необходимые нам конструкторы.
  1. public class JecpImage {
  2.  
  3.     public JecpImage(String res) throws IOException { }
  4.  
  5.     public JecpImage(InputStream is) throws IOException { }
  6.  
  7.     public int getWidth() { return 0; };
  8.  
  9.     public int getHeight() { return 0; };
  10. }
Теперь мы можем вызывать JecpImage img = new JecpImage("image.png");
Но это тоже не вариант, потому что нам надо в каждой библиотеке для конкретной платформы "подменить" эти методы и конструкторы на свои. Так не получается, потому что надо при вызове конструктора явно указать конечный класс.
Привести к нужному типу мы тоже не можем, так как инициализируется самый базовый класс.
Сделать класс абстрактным мы тоже не можем, потому что при вызове конструктора нам создастся анонимный класс.

Есть у кого идеи?
__________________
 let live

Изменено aNNiMON (7.02 / 19:49) (всего 1 раз)
- 7.02.2014 / 19:53
DominaN
  Пользователь

DominaN 
Сейчас: Offline
aNNiMON,
  1. public class JecpImage {
  2.  
  3.     public static JecpImage createImage(String res) throws IOException { }
  4.  
  5.     public static JecpImage createImage(InputStream is) throws IOException { }
  6.  
  7.     public int getWidth() { return 0; };
  8.  
  9.     public int getHeight() { return 0; };
  10. }
не?
- 7.02.2014 / 20:12
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
DominaN, а потом?
Ну вот вызову я из верхнего уровня:
JecpImage img = JecpImage.createImage("image.png");

Как мне потом передать управление классу из библиотек Android, Java ME и Java SE?
Статические методы не наследуются, а даже если бы и наследовались - мы инициализируем объект базового уровня, мы не можем к производным доступ получить.
__________________
 let live
- 7.02.2014 / 20:19
DominaN
  Пользователь

DominaN 
Сейчас: Offline
aNNiMON, ну а как ты рандом, скажем, использовать собирался? :)
- 7.02.2014 / 20:21
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
DominaN, рандом и так используется, потому что он общий для всех платформ.
Graphics тоже нормально работает, потому что он интерфейс и мне не надо вызывать его конструктор.
__________________
 let live
- 7.02.2014 / 20:38
DominaN
  Пользователь

DominaN 
Сейчас: Offline
aNNiMON, в любом случае придется класс-оболочку создавать в каждом из API
Наверх  Всего сообщений: 140
Фильтровать сообщения
Поиск по теме
Файлы топика (11)