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 的计划中,Oracle 就 Java 9 及更高版本进行的讨论也不包括它的计划。就我个人而言,我不喜欢它 - 它引入了许多复杂性,例如优先级和顺序,除非用户非常小心,否则可能会导致微妙、烦人的错误,并且(无论你是否同意这种立场)我相信这是决定首先将其从语言中排除的原因。

于 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 回答