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

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


让我们假设类如下:


class Person {

   private int age;

   private float weight;


   // getters and setters and etc

}

我希望int强制转换返回age一个对象的成员,并希望强制转换float返回一个对象的成员weight。


例如:


public class Main {

    public static void main(String[] args) {


        // create an object

        Person P = new Person();

        P.setAge(21);

        P.setWeight(88.0);


        // case 1: casting object to an existing data type

        int personAge = (int) P; // would return the age

        float personWeight = (float) P;  // would return the weight


        // case 2: casting an existing data type to an object

        Person P2 = (Person) personAge; // this would create an instance of the object whose age is assigned and weight is not assigned


    }

}


我想知道是否可以做相反的事情。特别是,强制转换int为将返回其已分配Person的实例,对于.Personagefloat


我知道这个问题可能没有答案。但是因为我在搜索中没有找到任何有用的结果,所以我决定问问它。


PS 我知道对于 a String,该toString方法会处理案例 1。


qq_花开花谢_0
浏览 88回答 3
3回答

手掌心

您不能重载强制转换运算符。Java 不支持它,而且可能永远不会。要将单个值转换为所需类的实例,我们使用静态工厂方法。public static Person fromAge(int age) {     return new Person(age); }他们通常返回一个部分构造的对象。在上面的代码片段中,一个新构造的人只age设置了:其他字段将具有它们的默认值。相反,我们使用吸气剂。public int getAge() {     return age; }但是,由于toString已经存在,添加其他数据类型也是有意义的。toInt当它应用于我时(作为Person类的一个实例)没有任何意义。可能是我的身高、体重、年龄、今天去洗手间的次数等等。我不能用一个整数来代表我自己,大多数班级也不能。另一方面,toString可以很好地完成这项工作:我可以给你 (read return ) 我的爱好、我的生物识别信息,甚至我的照片的总结。或者我可以将它留给默认实现,它仍然可以令人满意地表示一个对象。

慕标5832272

您不会为此使用强制转换,只需在您的 Person 类中编写方法来获取这些值。public int getAge(){   return age; }

12345678_0001

所以我只做过一次,我不确定我做的方法是否合适。但我的方法是一个名为 的方法typeConverter,我会给它一个objectas parameter,然后你可以parameter看看它是什么对象类型,然后用你的值创建一个新的 Person。虽然这种方法可能会导致问题,但当您的班级有两个integer fields. 但我认为你可以找到一个解决方案,通过给它另一个参数来定义,你想将它转换到哪个字段。我真的很抱歉我的英语不好,但我希望你能明白原则。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java