2013-11-27 1 views
0

Android 앱에서 연락처 목록에 몇 개의 연락처가 있습니다. 이메일, 전화 번호 또는 다른 것 중 하나 일 수 있습니다. 이제 어떤 유형인지 확인하고 특정 작업을 바인딩하려고합니다.유형을 확인하는 방법은 무엇입니까?

예를 들어, 유형이 vnd.android.cursor.item/email_v2 인 경우 이메일 필드와 함께 POST 메시지를 보내려고합니다. 유형이 vnd.android.cursor.item/phone_v2 인 경우 전화 필드만으로 POST 메시지를 보내려고합니다.

어떻게 확인할 수 있습니까? 난 당신이 내 포인트를 얻을 생각

checkContact(email_v2 email){ do things with email } 
checkContact(phone_v2 phone){ do things with phone } 
checkContact(String s){do things with random string } 

:
당신과 같은 다른 입력 매개 변수가 있지만 같은 이름을 가진 여러 메소드를 구현 :

+0

을 당신은'예 of'을 찾고 계십니까 ? 'email_v2'는 무엇입니까? –

+0

내가 잘못하지 않으면 이러한 유형은'String' (또는'Uri's?)입니다. 당신은 가장 간단하게 [비교할 수 있습니다] (http://stackoverflow.com/questions/513832/how-do-i -compare-strings-in-java). 유형을 얻는 방법과 실제로 어떤 변수 유형을 사용하는지/어떻게 사용할 계획인지 보여주는 코드 스 니펫을 추가하십시오. – zapl

답변

0

내가 과부하를 사용하는 것입니다 갈 방법을 생각한다.

if (contact instanceof vnd.android.cursor.item/email_v2){ do send } 
+0

자바에서는 작동하지 않습니다. 오버로드 된 메서드는 컴파일 타임에 이미 선택되어 있습니다. – zapl

+0

@zapl 흠, 오늘 자바에서 오버로드를 사용하여 저를 위해 일했습니다. –

+0

컴파일 타임에 유형을 알고 있지만 런타임시 실제 유형을 기반으로 다른 메소드를 실행하기 위해 오버로드를 사용할 수없는 경우 작동합니다. http://stackoverflow.com/questions/3883414/is-there-any-reason- that-java-uses-late-static-binding-for-overloaded-methods-in ('catch' 블록은 그렇게한다.) – zapl

0

당신은 당신의 다른 유형에 대한 상수 클래스 CONTENT_ITEM_TYPE을 확인 시도해 볼 수도 있습니다, 같은 : 당신이 비록 간단한 경우 문, 원하는 경우

contact.CONTENT_ITEM_TYPE.equals("vnd.android.cursor.item/email_v2");