2013-04-30 5 views
1

많은 클래스 (45 개 이상)가 있습니다. 각 클래스에는 모든 클래스에서 반복되는 무언가를 검증하는 고유 한 메서드가 있으므로 모든 클래스에서 코드가 반복됩니다. 한 가지 방법을 가지고 모든 수업에서 호출하고 싶습니다. 모바일 장치가Intellij Idea 및/또는 Eclipse의 메소드 리팩터링

private boolean isMobileDevice(HttpServletRequest request) { 
    String userAgent = request.getHeader("user-agent"); 
    return userAgent.indexOf("Windows CE") != -1; 
} 

으로 전에 말했듯이 서버에 연결되어있는 경우 알 수있는 다음과 같은 코드가있는 경우

,이 방법은 많은 클래스에서 반복

는 IntelliJ에 아이디어에서 그것을 가능/또는 이클립스를 리팩토링하는 사람? 어떻게 리팩토링을 수행 할 수 있습니까?

+0

일부 샘플 코드를 살펴볼 수 있습니까? –

+0

물론 가능할 것입니다. 제 질문에 반복되는 기능을 추가했습니다. – igarcia

답변

0
private boolean isMobileDevice(HttpServletRequest request) { 
     String userAgent = request.getHeader("user-agent"); 
     return userAgent.indexOf("Windows CE") != -1; 
} 

내가 그것을 둘러싸는 클래스의 모든 필드를 사용하지 않기 때문에 내 이클립스,이 방법은 static로 선언 될 수 있다는 것을 나에게 경고합니다 내기 - 같은 방법은 static으로 선언해야하는 것은 당신이 아니라는 것을 알려합니다 본질적으로 클래스를 둘러 쌀 필요가 있고, 이유가있을 경우 (하나 대신에 45 가지의 메소드가있는 이유), 다른 클래스로 옮길 수 있고 public 또는 package 메소드라고 부를 수 있습니다.

편집 : 그것은했다 : The method isMobileDevice(HttpServletRequest) from the type Test can be declared as static : 그래서

:

가 다른 클래스에 복사, 그것은 public static boolean isMobileDevice(HttpServletRequest request)을하고 private boolean이었다 모든 클래스에서 사용합니다.

그게 다예요.하지만 자동 리펙터로는 보이지 않습니다.

0

Intellij를 사용하면 "Refactor" > "Find and Replace Code Duplicates..."을 시도 할 수 있습니다. 중복 된 코드를 정적 함수로 대체합니다.