如何用Java编写自定义转换方法

ore*_*ani 5 java casting

我有一个有几个成员的 Java 类。我想为它编写一个自定义演员表。我想知道怎么可能这样做?

我们假设该类如下:

class Person {
   private int age;
   private float weight;

   // getters and setters and etc
}
Run Code Online (Sandbox Code Playgroud)

我希望强制转换返回对象的int成员,并希望强制转换返回对象的成员。agefloatweight

例如:

class Person {
   private int age;
   private float weight;

   // getters and setters and etc
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以做相反的事情。特别是,转换intto将返回其被分配Person的实例,对于 也类似。Personagefloat

我知道这个问题可能没有答案。但由于我在搜索中没有找到任何有用的结果,所以我决定询问一下。

PS 我知道对于 a String,该toString方法将处理情况 1。

And*_*lko 6

您不能重载强制转换运算符。Java 不支持它,而且可能永远不会支持它。

要将单个值转换为所需类的实例,我们使用静态工厂方法。

public static Person fromAge(int age) {
    return new Person(age);
}
Run Code Online (Sandbox Code Playgroud)

它们通常返回部分构造的对象。在上面的代码片段中,新构建的人员仅age设置:其他字段将具有默认值。

为了做相反的事情,我们使用吸气剂。

public int getAge() {
    return age;
}
Run Code Online (Sandbox Code Playgroud)

但是,由于toString已经存在,因此添加其他数据类型也是有意义的。

toInt当它应用于我时(作为类的实例Person)没有任何意义。可能是我的身高,我的体重,我的年龄,我今天去洗手间的次数,等等。我不能用一个整数来代表我自己,大多数班级也不能。

另一方面,toString可以很好地完成这项工作:我可以给你(阅读返回)我的爱好、我的生物特征信息、甚至我的照片的摘要。或者我可以将其保留为默认实现,它仍然可以令人满意地表示一个对象。