Использование instanceof в классе, который расширяет другой - PullRequest
0 голосов
/ 09 октября 2019

Меня попросили расширить класс, который реализует определенную функцию, которую нужно изменить, чтобы избежать вставки в базу данных, которая больше не нужна.

Моя проблема в том, что при просмотре функции I´меня попросили выполнить репликацию в новом классе Java, и я обнаружил следующее:

function createDup() {

 //some code here...
    //the two lines I want to comment out in the new class...
    MboSetRemote myDoclinksSetRemote = getMboSet("DOCLINKS");
    myDoclinksSetRemote.copy(newWORemote.getMboSet("DOCLINKS"));

    //code I want to keep the same in the new class...
    if (this instanceof psdi.app.work.WORelease) {
           dup = getTranslator().toInternalString("WORELEASEDUPFLAG", getString("dupflag"));
        } else if (this instanceof WOChange) {
           dup = getTranslator().toInternalString("WOCHANGEDUPFLAG", getString("dupflag"));
        } else {
           dup = getTranslator().toInternalString("WODUPFLAG", getString("dupflag"));
        }

// some more code here..

Можно ли мне сохранить ту же логику, но делать это из нового класса?

ДляНапример, если я создал класс ExtendsOriginal.java, где я делаю расширение и пытаюсь изменить функцию, упомянутую выше (createDup), как я могу сделать то же самое, что делается в исходной функции класса? В этот момент я только что попытался скопировать точно такой же код ... но я получаю ошибку (несовместимые условные операнды типа ExtendsOriginal и WORelease) в таких условных выражениях, как: if (this instanceof psdi.app.work.WORelease) {...}

public class ExtendsOriginal extends psdi.app.work.Original {

   public ... createDup(){
      //same code as original but without the two fist lines..

      if (this instanceof psdi.app.work.WORelease) {
           dup = getTranslator().toInternalString("WORELEASEDUPFLAG", getString("dupflag"));
      }
   }


}

Кто-то знает, как с этим справиться? Спасибо.

...