안전한 오버로드와 모호한 오버로드는 인수 모양이 다르다

호출자가 캐스트 없이 의도를 표현할 수 있는지 확인합니다.

명확한 조합

print(String,int)
print(String[],int[],int)

모호한 조합

describe(String)
describe(StringBuilder)
null은 둘 다 가능

설계 판단행동 의미가 다르면 메서드 이름 자체를 분리

핵심: 새 오버로드 추가가 기존 null 호출을 깨뜨릴 수 있다는 점도 고려합니다.