2013-09-02 2 views
2

의 생성자가 here 인 생성자를 반영하려고합니다. 나는 NoSuchMethodException 오류가 계속하지만NetworkInfo Reflection

지금까지 내가

NetworkInfo mNetworkInfo; 
    Class<NetworkInfo> clazz = NetworkInfo.class; 
    Constructor<NetworkInfo> con = clazz.getConstructor(int.class,int.class,String.class,String.class); 
    mNetworkInfo = con.newInstance(n1,n2,s1,s2); 

있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까 ?

+0

그리고 달성하고자하는 것은 무엇입니까? "깨끗한 방법으로"뭔가를 달성하는 다른 방법이 있다면 반사가 권장되지 않습니다. – Sajmon

+1

'NetworkInfo' 객체를 반환하는'ConnectivityManager.getActiveNetworkInfo()'를 사용하는 클래스를 단위 테스트하려고합니다. 나는 이것을 mNetworkInfo로 바꾸고 싶다. –

답변

2

getConstructor을 올바르게 사용하고 있습니다. 난 당신이 안드로이드 SDK의 호환 버전을 가지고 생각하지 않습니다.

NetworkInfo에 대한 javadoc에는 생성자가 표시되지 않습니다.

버전 4.2.2_r1을 실행하는 장치에서 코드를 실행하고 있습니까?

+0

최소 sdk 버전은 8입니다. Grepcode에서 볼 수 있듯이이 생성자는 API 3 이후에 존재합니다. –

+0

@RaickyDerwent API 레벨 8 (Froyo)은 android 버전 2.2.x입니다. [here] (http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)를 참조하십시오. 생성자는 해당 버전에 존재하지 않는 것 같습니다. –

+0

빠른 응답을 보내 주셔서 감사합니다. 나는 [이 문서] (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/net/NetworkInfo.java#NetworkInfo)를 참조하고있었습니다. 생성자가 2.2.x 이전 이었음을 나타내는 % 3Cinit % 3E % 28int % 2Cint % 2Cjava.lang.String % 2Cjava.lang.String % 29). dev.android 사이트에서 이에 관한 정보를 찾을 수 없습니다. –