2015-01-01 2 views
1

Apple의 프로그래밍 언어 인 Swift에서는 자신의 클래스에 대한 배열에서와 마찬가지로 하위 첨자를 사용할 수 있습니다.Java의 사용자 정의 첨자

class MyNumber { 
    let value: Int 
    init(value: Int) { 
     self.value = value 
    } 
    subscript(i: Int) -> Int { 
     return value * i 
    } 
} 

이 클래스는 게터 첨자를 가지고 있지만, 너무 세터 첨자을 할 수있는 : 예를 들어 스위프트의 클래스는 다음과 같이 할 수있다. 어쨌든이 일 때 :

let number = MyNumber(value: 15) 
println(number[3]) 

는 출력 45

을 생산하고 그것은뿐만 아니라 자바에서 첨자를 사용하여 같은 클래스를 작성 할 수 있습니까? 물론 매개 변수가있는 메서드를 사용할 수는 있지만 가능한지 알고 싶었습니다. 답해 주셔서 감사합니다 :

+2

아니,하지 수 있습니다. Java에는 연산자 오버로딩이 없습니다. – August

답변

1

짧은 답변 : 아니오. Java에서 Class()과 같은 값을 설정하면 해당 객체의 새로운 인스턴스가 만들어집니다.

var = MyNumber(15) 
var.multiply(3) 

하고 MyNumber 클래스 코드에

는, 명확성을 위해 multiplysubstring을 변경 : 그냥 같은 것을 할. 그것은 똑같이 작동합니다.

같은 원리의 축약 버전은

System.out.println(MyNumber(15).multiply(3)); 
관련 문제