【问题标题】:Java object method for Python's __int__():Python 的 __int__() 的 Java 对象方法:
【发布时间】:2018-06-10 16:05:28
【问题描述】:

我正在尝试利用我现有的 Python 知识来学习 Java。我知道 Java 对象可以拥有 toString() 方法,就像 Python 对象拥有 __str__() 方法一样,但我不知道如何以同样的方式翻译 Python 的 __int__()

这将是我试图转换为 Java 的代码的 Python 等价物:

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

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

【问题讨论】:

  • 创建一个toInt() 方法。
  • 没有等价物。您可以在Robot 中添加一个static 方法,然后静态导入它?
  • 好吧,这正是我所预料的。
  • 没有等价物有什么原因吗? @BoristheSpider
  • Java 没有映射到语言功能的“神奇”方法——它是一种语言选择。出于某种原因,您需要询问 James Gosling - 我的猜测是,因为 Java 被设计为一种简单语言的缩影,所以决定添加这种魔法会减损这个目标。

标签: java python methods int


【解决方案1】:

Python 中的__int__ 方法允许将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();

}

然后您可以在您认为应该能够将自己变成int 的类中implementsInterface

【讨论】:

    猜你喜欢
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2022-08-18
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 2016-07-31
    相关资源
    最近更新 更多