2016-06-28 1 views
0

나는 당신이 점은 어떻게 와서가 추가되는 동안 문을 괄호에 동봉되어있는 경우 내부 (OBJ1)를 참조 오라클 웹 사이트의 자바 튜토리얼괄호로 인터페이스 객체 참조를 둘러싸는 목적은 무엇입니까?

https://docs.oracle.com/javase/tutorial/java/IandI/interfaceAsType.html

public Object findSmallest(Object object1, Object object2) { 
    Relatable obj1 = (Relatable)object1; 
    Relatable obj2 = (Relatable)object2; 
    if ((obj1).isLargerThan(obj2) < 0) 
     return object1; 
    else 
     return object2; 
} 

public boolean isEqual(Object object1, Object object2) { 
    Relatable obj1 = (Relatable)object1; 
    Relatable obj2 = (Relatable)object2; 
    if ((obj1).isLargerThan(obj2) == 0) 
     return true; 
    else 
     return false; 
} 

에서이 코드를 보았다? 괄호로 묶는 목적은 무엇입니까? , 나는 객체 참조가 도트와 함께 사용되고 메소드 이름을 첨부하는 한 생각했습니다. 이미 괜찮습니다. 그러나이 코드가 (obj1) .methodName으로 묶인 이유는 무엇입니까?

+5

더 포인트가없는 경우

. 코드는별로 좋지 않습니다. – user2357112

+0

그래, 정말로. 소음이 들리면 제거하십시오. – Enzokie

+0

다른 어리석은 것들 :'Relatable '일 필요가 있다면'Object'의 인수 형을 선언하는 이유는 무엇입니까? "greater than"테스트 대신에 3-way 비교 일 때 왜 비교 메소드가 isLargerThan이라고 부릅니까? 왜'return obj1.isLargerThan (obj2) == 0;'대신'isEqual'에있는 if-else가? 그들은 if-elses에도 실제로 중괄호를 사용해야합니다. – user2357112

답변

0

참조가 단순한 식별자 인 경우이 경우 괄호는 필요 없지만 완전히 합법적입니다. 따라서 (obj1).isLargerThan(obj2)을 작성하는 것은 obj1.isLargerThan(obj2)을 작성하는 것과 완전히 같습니다.

0

obj1은 중괄호로 묶지 않아도되므로 차이가 없습니다. 아래 두 진술은 모두 동일하며 아무런 차이가 없습니다.

경우 ((OBJ1) .isLargerThan (obj2보다) < 0) (obj1.isLargerThan은 (obj2보다) < 0)

감사

관련 문제