В моей (OpenGL!) Java-программе мне нужны 3 типа объектов: текстуры, фреймбуферы, экраны. Все три имеют некоторые общие характеристики (ширина, высота, уникальный идентификатор), но также различны в 1 фундаментальным образом:Java: борьба с множественным наследованием, Javadoc и интерфейсы
- Экраны только для вывода (визуализации)
- фреймбуферов можно читать и установить в качестве поверхностей для вывода
- Текстуры можно читать только (для nitpickers: я знаю, что можно «визуализировать текстуру», но только сначала привязывая его к FBO, и в этом случае моя программа рассматривает его как экземпляр Framebuffer)
Был ли он C++ с его множественным наследованием, у меня была бы база класс «Поверхность», затем два производных класса «InputSurface» и «OutputSurface», и класс Texture расширяет InputSurface, Screen OutputSurface и Framebuffer.
вниз к наземен его Java, поэтому я придумал следующее уродство:
interface InputSurface
{
/**
* Return the width of this Surface.
*/
int getWidth();
/**
* Return the height of this Surface.
*/
int getHeight();
/**
* Take the underlying rectangle of pixels and bind this texture to OpenGL.
*/
boolean setAsInput();
}
abstract class Surface
{
/**
* Return the width of this Surface.
*
* @return width of the Object, in pixels.
*/
public int getWidth() {...}
/**
* Return the height of this Surface.
*
* @return height of the Object, in pixels.
*/
public int getHeight() {...}
}
public class Texture extends Surface implements InputSurface
{
/**
* Bind the underlying rectangle of pixels as a OpenGL Texture.
*/
public boolean setAsInput() {...}
}
abstract class OutputSurface extends Surface
{
abstract void setAsOutput();
}
public class Screen extends OutputSurface
{
setAsOutput() {...}
}
public class Framebuffer extends OutputSurface implements InputSurface
{
setAsInput() {...}
setAsOutput() {...}
}
(мне нужен интерфейс InputSurface потому что позже мне нужно, чтобы иметь возможность принимать как фреймбуфер и текстуру входы универсальных методов, как это
void renderFrom(InputSurface surface)
{
(...)
}
указанных работ, единственная проблема это вносит беспорядок в документации Javadoc производства. В своей текстуре и Framebuffer документы Javadoc по существу дублирует «GetWidth/Height» metods, потому что он думает, что есть один я n Класс поверхности и другой в интерфейсе InputSurface.
Вот документация он приходит с:
http://distorted.org/javadoc-library/org/distorted/library/DistortedTexture.html
Любые советы?
Когда ваш вопрос о javadoc, вы должны добавить свои комментарии javadoc к фрагменту. –
Если верно, что в InputSurface и Surface есть методы getWidth и getHeight, что не так, если javadoc генерирует его? –
@ Джеймс: это похоже на дерьмо :) Взгляните на http://distorted.org/javadoc-library/org/distorted/library/DistortedTexture.html – Leszek