亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Java 中編寫自定義轉換方法

如何在 Java 中編寫自定義轉換方法

qq_花開花謝_0 2023-01-05 10:00:11
我有一個有幾個成員的 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 ) 我的愛好、我的生物識別信息,甚至我的照片的總結?;蛘呶铱梢詫⑺艚o默認實現,它仍然可以令人滿意地表示一個對象。


查看完整回答
反對 回復 2023-01-05
?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

您不會為此使用強制轉換,只需在您的 Person 類中編寫方法來獲取這些值。

public int getAge(){
  return age;
}


查看完整回答
反對 回復 2023-01-05
?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

所以我只做過一次,我不確定我做的方法是否合適。

但我的方法是一個名為 的方法typeConverter,我會給它一個objectas parameter,然后你可以parameter看看它是什么對象類型,然后用你的值創建一個新的 Person。

雖然這種方法可能會導致問題,但當您的班級有兩個integer fields. 但我認為你可以找到一個解決方案,通過給它另一個參數來定義,你想將它轉換到哪個字段。

我真的很抱歉我的英語不好,但我希望你能明白原則。


查看完整回答
反對 回復 2023-01-05
  • 3 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號