Установка значения для частных переменных суперкласса в подклассе без установщиков Java - PullRequest
0 голосов
/ 12 марта 2020

Итак, у меня есть это назначение, в котором у меня есть суперкласс с закрытой переменной intsance без установщика, и эта переменная отсутствует в параметрах конструктора, и мне нужно присвоить значение этой переменной, используя переопределенный метод типа void в множественном числе. подклассы с разными значениями, что я должен делать?

1 Ответ

0 голосов
/ 12 марта 2020

Если вам действительно не разрешено использовать какие-либо методы установки, и ваша переменная имеет частный доступ, тогда вам придется обманывать систему с помощью API отражения. Я знаю, какой язык программирования вы используете, но вот пример того, как вы бы это сделали в java

class Test<T> //Template cause u said it can have multiple values                              {
 private T secret;

 abstract void set(T myvalue);//this is void method u will be overriding
}

class A extends Test<Integer>
{
 void set(Integer value)
 {
  Field field=Test.class.getDeclaredField("secret");
  field.setAccessible(true);
  field.setValue(this,5);
 }
}

class B extends Test<Float>
{
 void set(Float value)
 {
  Fieldfield=Test.class.getDeclaredField("secret");
  field.setAccessible(true);
  field.setValue(this,5.5f);
 }
}

Как вы можете видеть, у нас нет доступа к переменной secret в классе T из наших подклассов, но мы, если мы просто знаем его имя, мы можем взломать его с помощью размышлений. Reflection - это API, доступный на всех языках. Опять же, не знаю, почему вы будете это делать, но, как предложили комментарии, получите лучшее задание -_-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...