Javaでメソッドをキャストカスタム書き方

rezvani:

私はいくつかのメンバーを持つ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のインスタンスを返すであろうPerson、そのことをageするために割り当てられ、同様にされますfloat

私はこの質問には答えを持っていない可能性が知っています。私は私の検索のいずれかの有用な結果を見つけることができませんでしたので、しかし、私はそれを依頼することを決めました。

PS私はのためにあることを理解しStringtoStringこの方法は、ケース1の世話をするでしょう。

アンドリューTobilko:

あなたは、キャスト演算子をオーバーロードすることはできません。Javaはそれをサポートし、おそらく決してしません。

所望のクラスのインスタンスに単一の値を変換するために、我々は、静的ファクトリメソッドを使用します。

public static Person fromAge(int age) {
    return new Person(age);
}

彼らはしばしば、部分的に構築されたオブジェクトを返します。上記のスニペットでは、新たに構築された人しかいageセット:他のフィールドは、デフォルト値を持つことになります。

逆を行うために、我々はゲッターを使用しています。

public int getAge() {
    return age;
}

しかし、toStringすでにそこにある、それは同様に他のデータ型を追加するために理にかなっています。

toIntそれは(のインスタンスとして私に適用されますとき意味をなさないPersonクラス)。それは私が1つのint型の数で自分自身を表現することができないなど、私の身長、体重、私の、私の年齢、私は今日トイレに行ってきました回数、しない、どちらもすることができます可能性があり、クラスの大多数。

一方、toStringかなりよくこの仕事を行うことができます。私は(読み、あなたを与えることができます復帰を)私の趣味の要約、私の生体情報、でも私の絵を。それとも私はまだ十分オブジェクトを表すことになり、デフォルトの実装で、それを残すことができます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=203963&siteId=1