9

Java で、[] アクセサーを配列のように使用できるカスタム クラスを作成する方法はありますか?

通常配列

int[] foo = int[5];
foo[4] = 5;
print(foo[4]);
//Output: "5"

カスタム クラス

class Bar {
    //Custom class that uses index as a ref
}

Bar foo = new Bar(5);
foo.set(4, 5);
print(foo[4]);
//Output: "5"
4

5 に答える 5

15

[]いいえ、クラスの演算子をオーバーロードすることはできませんJava。ただし、配列のゲッターを作成できます。

于 2012-12-05T16:20:30.097 に答える
6

いいえ、Java には演算子のオーバーロードはありません。

于 2012-12-05T16:20:38.553 に答える
4

いいえ、たとえばpublic <Type> get(int index){ ... }のように、メソッドを実装する必要があります。ArrayList

于 2012-12-05T16:22:05.790 に答える
1

[いいえ、これを行うには、Java でandの演算子のオーバーロードを追加]する必要があります。代わりに、同等の get / set メソッドを使用する必要があります。

Javaの将来のバージョンに演算子のオーバーロードを実装するという現在の計画はありません.Java 8の計画には絶対にありません.Java 9以降でOracleが行った話にもその計画は含まれていません. 個人的に私はそれが好きではありません - ユーザーが信じられないほど注意しない限り、優先順位や順序などの多くの複雑さを導入し、微妙で厄介なバグにつながる可能性があります.そもそもそれを言語から除外する決定が下された理由。

于 2012-12-05T16:29:23.400 に答える
-4

もちろん、

試す

Bar[] foo = new Bar[4];
foo[2] = new Bar();
System.out.print(foo[2]);

よろしく

于 2012-12-05T16:24:39.907 に答える