Время для разработки опции в Eclipse для изменения источника файла Java

Для начала отучитесь от того, что, как вы думаете, вы знаете. Давайте посмотрим, что значит быть 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.

1127 Теперь вернемся к вопросу. Может ли fun3 позвонить fun2? Ну, fun3 передаст свой указатель this (указатель на const-объект) в fun2, который ожидает указатель на объект. Это означало бы потерю константности, поэтому это не разрешается.

Может ли fun3 позвонить abs? Ну, fun3 передаст целое число в abs. Здесь нет проблем. Проблема заключается в потере постоянства this. Пока вы этого избегаете, у вас все хорошо.

5
задан Seb 17 April 2009 в 12:17
поделиться

3 ответа

Это действительно не так уж и сложно ... У меня были ученики в моем классе шаблонов дизайна, делающие это для задания ( добавление / удаление 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 - есть там много хорошей информации, но это только отправная точка)

4
ответ дан 14 December 2019 в 19:25
поделиться

Вероятно, вы потратите довольно много времени, чтобы проклясть сложность системы плагинов eclipse. Есть несколько примеров проектов разработки плагинов, которые могут быть очень полезны, если они охватывают область, в которой вы работаете.

Я бы сказал, что вы смотрите на 2-4 дня работы, потраченные в основном на знакомство с платформой - кто-то с большим опытом написания плагинов Eclipse, вероятно, займет не более часа.

Однако, ваш шаг 5 может быть сложным. Я не знаю, как легко получить доступ и изменить Java AST; Мой опыт основан на разработке плагина редактора для экзотического формата файла, а не кода Java.

1
ответ дан 14 December 2019 в 19:25
поделиться

Ну, четыре первых пункта легко достичь, даже с помощью обезьяньих кодировщиков, которые смотрят на документацию Eclipse PDE, поставляемую с Затмение. Это может быть достигнуто за 1 день работы, может быть 2.

Самое сложное - это действительно пятый и вид изменений, которые вы ожидаете сделать. Работать непосредственно с содержимым редактора просто, получить доступ к внутреннему редактору AST и изменить его - действительно более сложная задача, и я сомневаюсь, что это может быть достигнуто менее чем за неделю неопытными людьми (это может занять больше времени, в зависимости от того, какие модификации Вы хотите подать заявку).

0
ответ дан 14 December 2019 в 19:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: