我有一个有几个成员的 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。
3 回答
手掌心
TA贡献1942条经验 获得超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
TA贡献1966条经验 获得超4个赞
您不会为此使用强制转换,只需在您的 Person 类中编写方法来获取这些值。
public int getAge(){ return age; }
12345678_0001
TA贡献1802条经验 获得超5个赞
所以我只做过一次,我不确定我做的方法是否合适。
但我的方法是一个名为 的方法typeConverter
,我会给它一个object
as parameter
,然后你可以parameter
看看它是什么对象类型,然后用你的值创建一个新的 Person。
虽然这种方法可能会导致问题,但当您的班级有两个integer fields
. 但我认为你可以找到一个解决方案,通过给它另一个参数来定义,你想将它转换到哪个字段。
我真的很抱歉我的英语不好,但我希望你能明白原则。
添加回答
举报
0/150
提交
取消