Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的自定义下标_Java_Swift - Fatal编程技术网

Java中的自定义下标

Java中的自定义下标,java,swift,Java,Swift,在苹果的编程语言Swift中,您可以像在自己的类的数组中一样使用下标。 例如,Swift中的类可以如下所示: class MyNumber { let value: Int init(value: Int) { self.value = value } subscript(i: Int) -> Int { return value * i } } var = new MyNumber(15) var.multiply

在苹果的编程语言Swift中,您可以像在自己的类的数组中一样使用下标。 例如,Swift中的类可以如下所示:

class MyNumber {
    let value: Int
    init(value: Int) {
        self.value = value
    }
    subscript(i: Int) -> Int {
        return value * i
    }
}
var = new MyNumber(15)
var.multiply(3)
这个类只有一个getter下标,但是您也可以做一个setter下标。无论如何,在执行此操作时:

let number = MyNumber(value: 15)
println(number[3])
它产生输出45

在Java中也可以使用下标编写这样的类吗?当然,我可以简单地使用带有参数的方法,但我想知道这是否可行。
感谢您的回答:)

简短回答:否。在Java中设置等于
Class()
的内容将创建该对象的新实例化。就这样做吧:

class MyNumber {
    let value: Int
    init(value: Int) {
        self.value = value
    }
    subscript(i: Int) -> Int {
        return value * i
    }
}
var = new MyNumber(15)
var.multiply(3)
在您的
MyNumber
类代码中,为了清晰起见,将
下标
更改为
乘法
。这同样有效

同样原则的速记版本是

System.out.println(new MyNumber(15).multiply(3));

不,不可能。Java中没有运算符重载。