2014-12-18 1 views
-3

그래서 최적화를 위해 다른 매개 변수를 기반으로 배열을 정렬하는 여러 메서드를 결합하려고합니다. 전체 방법은이 라인을 제외하고는 동일하다 : METHOD 다른 접근 방법으로 변경되고변수를 사용하여 제어 메서드를 호출

for (int k = i; k >= 0 && currData.METHOD() <= playerData[k].METHOD(); k--) { 

    //The stuff inside the method is the same 
} 

는 배열이 정렬되는 방식을 제어 할.

나는 약간의 검색을 수행하여 Java reflection (나는 그것이 무엇인지는 모르겠다)을 발견했다. 누군가가 내 문제를 해결하는 데 그 기술을 사용할 수있는 방법이나 다른 더 나은 해결책을 설명 할 수 있습니까? 감사.

+0

'Comparator' 클래스에 대해 배워야 할 것 같습니다. 다른 필드를 기반으로 데이터를 비교하는 'Comparator'를 작성하고 적절한 필드를 사용하여 정렬 할 수 있습니다. 그건 그렇고, 당신은 거의 확실히 자신의 정렬 알고리즘을 작성하고 싶지 않습니다. 'Arrays.sort'와'Collections.sort'는 이유가 있습니다. –

답변

0

변수가 저장 될 때,이 같은 것을 할 수있는 한 : 코드는 함수 I를 호출하기 때문에 내 입력으로 단어를 길이를 입력하면

String what = new Scanner(System.in).nextLine(); 
System.out.println(what.getClass().getMethod(what).invoke(what)); 

, 출력은 6입니다 문자열에 입력하십시오. 당신이,이 함수 이름 다음에 두 번째 매개 변수의 필요한 경우는, 함수에 인수를 전달할 수 있습니다

for (int k = i; k >= 0 && currData.getClass().getMethod(methodName).invoke(currData) 
<= playerData[k].getClass().getMethod(methodName).invoke(playerData[k]); k--) 

: 그들은 당신이 뭔가를 할 수있는,하지만 같은 변수가 될 필요가 없습니다. 변수를 호출 할 함수 이름과 동일하게 만들고, 밥은 삼촌이되어 매력처럼 작동해야합니다.

+0

코드에서 무슨 일이 일어나고 있는지 잘 모르겠습니다. 설명해 주시겠습니까? 어떤 메소드가 호출되는지를 제어하기 위해 함수에 인수를 전달하려고합니다. – Zarwan

+0

코드는 객체의 클래스 메소드를 호출합니다. 그것은'currData.METHOD()'를 사용할 때 당신이하고있는 것과 동일하지만 동적입니다. METHOD는'string m = "method";'와 같은 문자열이 될 것이고'currData.getClass(). getMethod (m) .invoke (currdata)'를 사용할 것입니다.이 클래스의 메소드는 문자열과 같은 이름으로 호출합니다 값 (있는 경우). – Shadow

+0

@ Zarwan이 도움을 주었습니까? – Shadow

0

여기에서 리플렉션을 사용하지 마십시오. 다형성을 사용하면 도움이 될 것입니다.

관련 문제