使用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"
不,您不能[]
在Java
. 但是您可以为您的数组创建吸气剂。
不,Java 没有任何运算符重载。
不,您必须实现您的public <Type> get(int index){ ... }
方法,ArrayList
例如。
不,要做到这一点,Java 必须添加运算符重载[
and ]
- 您需要使用等效的 get / set 方法。
据我所知,目前没有为任何未来版本的 Java 实现运算符重载的计划——它绝对不在 Java 8 的计划中,Oracle 就 Java 9 及更高版本进行的讨论也不包括它的计划。就我个人而言,我不喜欢它 - 它引入了许多复杂性,例如优先级和顺序,除非用户非常小心,否则可能会导致微妙、烦人的错误,并且(无论你是否同意这种立场)我相信这是决定首先将其从语言中排除的原因。
尝试
Bar[] foo = new Bar[4];
foo[2] = new Bar();
System.out.print(foo[2]);
问候