До и включая Java 1.4, необходимо было предоставить файлу HTML package.html, как описано в других ответах.
Начиная с Java 1.5 можно также обеспечить package-info.java
, который содержит обычный комментарий Javadoc (никакой HTML). Последний предпочтен, поскольку это дает Вам некоторые дополнительные функции (особенно аннотации пакета).
Детали: документы Sun для javadoc
Помимо замечательных моментов, упомянутых другими, я также хотел бы добавить главный недостаток, который я обнаружил: все они отображаются в профилировщике как анонимные подпрограммы. По какой-то причине Devel :: DProf просто не знает, как вычислить имя.
Теперь я надеюсь , что более новый Devel :: NYTProf может работать лучше, но я не пробовал.
В качестве альтернативы вы можете использовать одну функцию, которая возвращает ссылку:class Base {
static int staticVarInst;
public:
virtual int &staticVar() { return staticVarInst; }
}
class Derived: public Base {
static int derivedStaticVarInst;
public:
virtual int &staticVar() { return derivedStaticVarInst; }
}
Затем вы можете использовать это как:
staticVar() = 5;
cout << staticVar();
Они будут использовать один и тот же экземпляр.
Вам нужно будет объявить отдельные статические переменные для каждого подкласса, или вы можете рассмотреть простую статическую карту, в которой вы можете хранить переменные, на которые есть ссылки производными классами.
Edit : Возможным решением этой проблемы было бы определение вашего базового класса как шаблона. Наличие статической переменной, определенной в этом шаблоне, будет означать, что каждый производный класс будет иметь собственный экземпляр статической переменной.
В вашем случае есть только одна staticVar
: Base :: staticVar
Когда вы объявляете статическую переменную в классе, переменная объявляется только для этого класса. В вашем случае DerivedA даже не может видеть staticVar
(поскольку он закрытый, незащищенный или общедоступный), поэтому он даже не знает о существовании переменной staticVar
.