2012-12-24 2 views
3

파이썬에서는 함수 매개 변수의 유형을 지정할 필요가 없습니다. Java 메소드 매개 변수에 대해이 작업을 수행 할 수있는 방법이 있습니까? 만약 내가 어떤 종류의 주장이 입력 될지 모르겠다.정의되지 않은 유형의 자바 매개 변수

+3

자바는 강력한 형식의 언어입니다. http://docs.oracle.com/javase/tutorial/java/javaOO/methods.html - Generics를 사용하면 호출 할 때 유형을 지정할 수 있지만 형식을 지정해야합니다. http://docs.oracle .com/javase/tutorial/java/generics/ –

+1

_real_ 문제가 무엇입니까? 나는 약한 타이핑에 포인트가있는 경우를 한번도 발견하지 못했습니다 (몇 가지 타이핑을 저장하는 것 외에는). – ignis

답변

9

개체 또는 제네릭이 시도 :

목적 :

public void foo(Object bar) 
{ 

} 

제네릭 :

public <T> void foo(T bar) { 

} 

+1

전자는 끔찍한 충고이며 쓸모가 없습니다. 그 이유는 여전히 메서드 내부의 형식을 알고 적절하게 캐스팅해야하기 때문입니다. 실제로 제네릭이 만들어진 이유 중 하나는 많은 경우에이를 없애는 것이 었습니다. 대부분의 경우 다형성이이를 처리하는 올바른 방법입니다. 후자는 메서드를 호출 할 때/형식을 지정할 때 형식을 지정해야합니다. –

+2

물론. 그러나 질문에 나는 그것이 어떤 문제인지를 알 수 없다. 그래서 그 가능성은 ... –

+0

Brian은 복잡한 시나리오에서 요점을 가지고 있지만, 제 1의 메소드는 완벽하게 괜찮습니다. 실제로는 메소드 매개 변수처럼 단순 할 때 좋습니다. – ignis

1

파이썬, 자바 스크립트와 유사한 동적으로 입력 된 언어는 임의의 속성이 개체가 예를 들어 코드 할 수 있습니다 :

someObj.someAttr 

유형에 이러한 속성이 있고 설정되어 있으면 속성 값을 반환하고 그렇지 않으면 null을 반환합니다.

자바에서이 가장 가까운 것은 문자열 키와 객체 값이있는지도, 그래서이 시도 :

public void someMethod(Map<String, Object> map) { 
    Object o = map.get("someAttr"); 
    // do something with o, which may be null 
}