Передача float в конструктор, который принимает только int — невозможно изменить конструктор

#java #oop

#java #ооп

Вопрос:

Я создаю новый класс (B), который расширяет другой класс (A).

В классе A существует метод получения класса X, который создает и возвращает объект класса X.

Мне НЕ разрешено изменять класс A или X.

Конструктор класса X в настоящее время принимает int и string , которые уже были введены в классе A. Мне нужно переопределить этот метод в классе B и создать объект класса X с float и string вместо int и string, и я не могу понять, как это сделать. Есть идеи?

 public class X {

   private int myInt;
   private String myString;

   public X(int myInt, String myString){
      this.myInt = myInt;
      this.myString = myString;
   }
}


public class A {

   protected X getX(){
      return new X(1, "A");
   }
}

public class B extends A {

   @Override
   protected X getX(){
      return new X(1.5, "A"); //Here, I can't input a float. 
   }
}

 

Комментарии:

1. Ну, поскольку X вы все равно не можете обрабатывать float, вам нужно преобразовать ваш float в int . Попробуйте Math.ceil

2. Если создание объекта класса X с плавающей точкой и строкой означает также создание объекта класса, производного от X , тогда вы могли бы создать класс Y , который расширяется X и имеет c’torс плавающей точкой и строкой. а затем в B getX() методе, который вы бы инициализировали Y .

Ответ №1:

float int по умолчанию не может быть понижен до.

Вы можете передать floor/ceil значение float

Или используйте (int)1.5 здесь неявное преобразование