6

Javaで切り替え可能なクラスを作成したいそのようなスイッチケースを作成できるクラス

public class MySwitchableClass implements Comparable<MySwitchableClass>
{
    @Override
    public int compareTo(MySwitchableClass arg0) {
    // TODO Auto-generated method stub
    return 0;
    }
}

そして、私はそれをそのように使用します

    MySwitchableClass s = new MySwitchableClass();
    MySwitchableClass s1 = new MySwitchableClass();

    switch(s){
    case s1:
        //do something
        break;
        default break;
    }
4

5 に答える 5

1

ステートメントの値は、switchプリミティブ データ型、列挙型、または文字列のみにすることができます。あなたがやろうとしていることは実装できません。代わりにできることは、プリミティブ データ型を返すそのクラスの関数を呼び出すことです。

于 2013-09-26T09:26:30.737 に答える
0

Java スイッチは、カスタム オブジェクトではなく、限られた数のデータ型で機能します。

こちらの説明を参照してください(Java 7 に適用されます)。

Java 7 を使用している場合は、クラスのメソッドをオーバーライドしてObject.toString切り替えることができます。yourInstance.toString

使用することswitchと実装することComparableは、2 つの非常に異なるものです。

于 2013-09-26T09:25:20.783 に答える
0

回答ありがとうございます。Java が通常のクラスと同じように、この豊富な列挙型をサポートしているとは知りませんでした。

列挙型を使用し、必要なすべてのフィールドとメソッドを定義しました。また、必要なインターフェイスを実装しました。デフォルトでは、列挙型は切り替え可能な型です。

したがって、 enum は私が必要とするすべてを行うことができます。私の列挙型定義は次のとおりです

public enum GearType implements ConfigurationParameter {
    Automatic("Automatic"), Manual("Manual");

    private String type;

    GearType(String _type) {
        type = _type;
    }

    @Override
    public String toString() {
        return type;
    }

    @Override
    public void doSomeFunction(Object caller) {
        //TODO function code
    }
}
于 2013-09-26T11:11:58.853 に答える