Имущество с различным типом

Учитывая следующий пример, возможно ли иметь установщик для x который принимает Int и другой, который принимает Double ?

 class Test(x: Float) { var x: Float = x get() { return field } set(value) { // 'value' is of type 'Float' field = value } } 

Причина. Если я хочу назначить новое значение x мне всегда нужно добавить f postfix для каждого присваивания, т. Е.

 var v = Test(12f) vx = 11 // error: 'The integer literal does not conform to the expected type Float' vx = 11.0 // error: 'The floating-point literal does not conform to the expected type Float' vx = 11f // ok 

Хотя вы не можете перегрузить setter, вы можете воспользоваться интерфейсом Number и просто принять все числа и преобразовать их в float:

 class Test(x: Float) { var x: Number = x get() { return field } set(value) { // 'value' is of type 'Number' field = value.toFloat() } } 

Это означает, что принимаются не только Float , Int и Double , но также и Byte , Short , BigInteger , BigDecimal , AtomicInteger , AtomicLong , AtomicDouble и любой другой класс, который реализует Number .

Как насчет:

 class Test(x: Float) { var x: Float = x get() { return field } set(value) { // 'value' is of type 'Float' field = value } fun setX(value: Int) { x = value.toFloat() } }