2012-05-07 3 views
0

Я использую IDE Eclipse для написания кода Java. У меня есть класс структура, как это:Как отдельные вызовы методов с eclipse?

class Item 
{ 
    private ItemId id; 
    public ItemId getId() 
    { 
     return this.id; 
    } 
} 

class ItemId {/*just some class*/} 

У меня также есть utily метод с восстановлением пункта по его Itemid, метод имеет следующие подписи:

UtilityClass.utilityMethod(ItemId id); 

Итак, есть много звонков, как это :

Item unpredictableItemName = ... 
UtilityClass.utilityMethod(unpredictableItemName.getId()); 

или

ItemId unpredictableIdName = ... 
UtilityClass.utilityMethod(unpredictableIdName); 

Я хочу написать новый метод, который будет использовать уже построен Item объект:

UtilityClass.utilityMethod(Item item); 

Так что вопрос: Как переместить звонки из

UtilityClass.utilityMethod(unpredictableItemName.getId()) 

в

UtilityClass.utilityMethod(unpredictableIdName)? 
+2

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

+0

Я знаю этот путь, но я хочу автоматизированный, который может сделать это вместо меня. (один за другим действительно длинный и подверженный ошибкам). – Cherry

ответ

0

Используйте текстовый поиск и повтор регулярного выражения в.п. заменить:

UtilityClass.utilityMethod\((.*)\.getId\(\)\) с UtilityClass.utilityMethod\(\1\)

А затем исправить подпись метода вручную.

+0

Кажется, что после замены UtilityClass.utilityMethod (variableName.getId()) становится UtilityClass.utilityMethod (1), так как я буду знать, какое значение varName было использовано (если есть какие-то vaiables с типом Item)? – Cherry

+0

Проверьте правильность ввода строки замены. Вы хотите ввести '\ 1', который ссылается на содержимое' (. *) 'В выражении поиска. Возможно, вы могли отказаться от '\'. Вот почему вы используете поиск регулярных выражений (установите флажок регулярного выражения в диалоговом окне поиска). –

0

Выберите utilityMethod(ItemId id), щелкните правой кнопкой мыши и выберите «Рефакторинг»> «Подпись метода изменения». Выберите параметры, чтобы сохранить оригинальный метод и осудить его. Вы получите оба метода в UtilityClass, а вызывающие стороны оригинала будут отмечены по причине устаревания. Затем вы можете использовать опцию regex выше или просто использовать предупреждения об устаревании для миграции со временем.

+0

На самом деле это не сработает для его дела (я попробовал, вам тоже нужно). –

+0

@FrancisUpton, вы правы, но он может стать частью и помочь миграции. Я обновил ответ, чтобы отразить это. Пожалуйста, подумайте об удалении нисходящего потока. –

+0

Без проблем, сделано. :) –

Смежные вопросы