В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Единственным путем я знаю, как сделать, это с PostSharp. Это выполняет последующую обработку Ваш IL и может сделать вещи как то, что Вы попросили.
Вам нужна своего рода Аспектно-ориентированная платформа. PostSharp сделает это, как будет Виндзор .
В основном, они разделяют Ваш объект на подклассы и переопределяют этот метод...
тогда это становится:
//proxy
public override void DoSomeStuff()
{
if(MethodHasTriggerAttribute)
Trigger();
_innerClass.DoSomeStuff();
}
, конечно, все это скрыто Вам. Все, что необходимо сделать, просит Виндзор тип, и это сделает проксирование для Вас. Атрибут становится (пользовательским) средством, я думаю в Виндзоре.
Можно использовать ContextBoundObject и IMessageSink. См. http://msdn.microsoft.com/nb-no/magazine/cc301356 (en-us) .aspx
быть предупрежденными, что этот подход оказывает серьезное влияние производительности по сравнению с вызовом прямого метода.
Я не думаю, что существует способ сделать это только с атрибутом, но использованием прокси-классы и отражение, у Вас мог быть класс, который знает для прерывания инстанцирований классов, в которых Вы приписали методы.
Тогда прокси-класс может инициировать событие каждый раз, когда приписанные методы называют.
Атрибут дает информацию, они - метаданные. Я не знаю о способе сделать это бесцеремонно, кто-то мог бы.
Вы могли посмотреть на частичные методы в.NET, которые позволяют Вам делать некоторую легкую обработку событий. Вы обеспечиваете рычаги и позволяете кому-то еще обработать реализацию. Если метод не реализован, компилятор просто игнорирует его.