Java объектный метод для Python __int __ (): - PullRequest
0 голосов
/ 10 июня 2018

Я пытаюсь выучить Java на основе имеющихся у меня знаний Python.Я понимаю, что Java-объект может иметь метод toString() так же, как объект Python будет иметь метод __str__(), но я не знаю, как перевести Python __int__() таким же образом.

Вот Python-эквивалент кода, который я пытаюсь перевести на Java:

class Robot:
    def __init__(self):
        pass
    def __int__(self):
        return 12

print(int(Robot())) # Should print 12.

1 Ответ

0 голосов
/ 10 июня 2018

Метод __int__ в Python позволяет class подключаться к функциональности int(), встроенной в язык - для "разбора" экземпляра произвольного class на int.

В Java нет эквивалента, но вы можете создать похожую конструкцию.Это потребовало бы, чтобы вы были явными.

public class Robot {
    private int serial;

    //ctor, getters, setters etc etc

    public int toInt() {
        return serial;
    }

    public static int toInt(Robot robot) {
        return robot.toInt();
    }
}

Тогда вы можете сделать что-то вроде

//some class, synax elided

import static com.pkg.Robot.toInt;

System.out.println(toInt(new Robot()));

Поскольку в Java нет функциональности int(), это на самом деле не дает вамнамного больше:

System.out.println(new Robot().toInt());

Или даже гораздо более понятное:

System.out.println(new Robot().getSerial());

Если вы хотите что-то более общее, вы можете создать interface:

public interface Intable {

    int toInt();

}

Тогда вы можете implements Interface в классах, которые, по вашему мнению, должны превратиться в int.

...