"부울"유형과 "부울"유형의 클래스를 일치시키는 방법은 무엇입니까?
다음 코드를 고려하십시오.retType
object U { def foo(s:String) = true }
val boolType = Class.forName("java.lang.Boolean")
val retType = U.getClass.getMethods.find(_.getName == "foo").get.getReturnType
boolType == retType // evaluates to false (*)
println (boolType) // prints "class java.lang.Boolean"
println (retType) // prints "boolean"
(*)
이 (*)
으로 표시된 줄에서 boolType
와 일치하도록합니다. 박스형 및 박스 화되지 않은 유형의 클래스를 자동으로 동일하게 만드는 방법은 무엇입니까?
[편집 2 :] 컨텍스트 : 나는 자동으로 메소드를 호출하는 코드를 작성 중이다. 양식 이름을 기반으로합니다. 코드는 메서드에서 반환 형식 등을 추출하고 적절한 대답을 반환해야합니다. 예를 들어 다음 스 니펫이 사용됩니다.
object someObject {}
val validTypes:Array[Class[_]] = Array(Class.forName("java.lang.String"),
someObject.getClass,
Class.forName("java.lang.Boolean"))
object U { def foo(s:String) = true } // can contain more methods
def getRetType(name:String) =
U.getClass.getMethods.find(_.getName == name).get.getReturnType
println ("Type is "+(if (validTypes.contains(getRetType("foo"))) "valid" else "invalid"))
흥미로운 질문이지만 어떤 맥락에서 필요합니까? 컴파일 타임이나 런타임에 확인하길 원하십니까? – paradigmatic
@paradigmatic 검사는 런타임에 완료 될 것입니다. – Jus12