Для начала отучитесь от того, что, как вы думаете, вы знаете. Давайте посмотрим, что значит быть const
участником.
class D {
public:
int fun2();
int fun3() const;
};
Что это заявляет? Существует класс под названием D
. Есть две функции-члена fun2
и fun3
, каждая из которых принимает скрытый параметр this
и никаких других параметров.
Держись! Скрытый параметр? Ну да. Вы можете использовать this
внутри функции; его ценность должна исходить откуда-то. Все нестатические функции-члены имеют этот скрытый параметр. Однако не все нестатические функции-члены имеют одинаковый тип скрытого параметра. Если бы я показывал скрытый параметр, объявления выглядели бы следующим образом:
int D::fun2(D * this);
int D::fun3(const D * this);
Обратите внимание, как const
существует внутри этого псевдо-объявления? Это эффект объявления функции-члена const
: this
указывает на объект const
, а не на объект const
.
fun3
позвонить fun2
? Ну, fun3
передаст свой указатель this
(указатель на const-объект) в fun2
, который ожидает указатель на объект. Это означало бы потерю константности, поэтому это не разрешается.
Может ли fun3
позвонить abs
? Ну, fun3
передаст целое число в abs
. Здесь нет проблем. Проблема заключается в потере постоянства this
. Пока вы этого избегаете, у вас все хорошо.
Это действительно не так уж и сложно ... У меня были ученики в моем классе шаблонов дизайна, делающие это для задания ( добавление / удаление javabean-геттеров и сеттеров)
См. http://help.eclipse.org/ganymede/topic/org.eclipse.jdt.doc.isv/guide/jdt_api_manip.htm
[ РЕДАКТИРОВАТЬ : добавили следующую ссылку на статью ]
И большую статью об этом на http://www.eclipse.org/articles/article .php? file = Article-JavaCodeManipulation_AST / index.html (с 2006 года - может быть несколько изменений API с тех пор)
Да, к написанию плагинов требуется немного привыкнуть, как и к любому API.
И вы можете изменить AST - см. Страницу, на которую я ссылаюсь выше.
(Я должен отметить, что вышеуказанная ссылка взята из справки eclipse, доступ к которой также можно получить через Help-> Help Contents внутри Eclipse - есть там много хорошей информации, но это только отправная точка)
Вероятно, вы потратите довольно много времени, чтобы проклясть сложность системы плагинов eclipse. Есть несколько примеров проектов разработки плагинов, которые могут быть очень полезны, если они охватывают область, в которой вы работаете.
Я бы сказал, что вы смотрите на 2-4 дня работы, потраченные в основном на знакомство с платформой - кто-то с большим опытом написания плагинов Eclipse, вероятно, займет не более часа.
Однако, ваш шаг 5 может быть сложным. Я не знаю, как легко получить доступ и изменить Java AST; Мой опыт основан на разработке плагина редактора для экзотического формата файла, а не кода Java.
Ну, четыре первых пункта легко достичь, даже с помощью обезьяньих кодировщиков, которые смотрят на документацию Eclipse PDE, поставляемую с Затмение. Это может быть достигнуто за 1 день работы, может быть 2.
Самое сложное - это действительно пятый и вид изменений, которые вы ожидаете сделать. Работать непосредственно с содержимым редактора просто, получить доступ к внутреннему редактору AST и изменить его - действительно более сложная задача, и я сомневаюсь, что это может быть достигнуто менее чем за неделю неопытными людьми (это может занять больше времени, в зависимости от того, какие модификации Вы хотите подать заявку).