검색

37.3.2. CheckWidgets 작업

download PDF

37.3.2.1. 개요

CheckWidgets 는 대체 그룹의 헤드 멤버인 매개 변수가 있는 간단한 작업입니다. 이 작업에서는 대체 그룹의 멤버인 개별 매개 변수를 처리하는 방법을 보여줍니다. 소비자는 매개변수가 대체 그룹의 유효한 멤버인지 확인해야 합니다. 서비스에서는 요청에 전송된 대체 그룹의 멤버를 올바르게 결정해야 합니다.

37.3.2.2. 소비자 구현

생성된 메서드 서명은 대체 그룹의 head 요소 유형을 지원하는 Java 클래스를 사용합니다. 대체 그룹의 멤버 요소는 head 요소 또는 head 요소의 유형에서 파생 된 형식의 동일한 유형 중 하나이므로 대체 그룹의 멤버를 지원하기 위해 생성된 Java 클래스는 head 요소를 지원하기 위해 생성된 Java 클래스에서 상속됩니다. Java의 유형 계층 구조는 기본적으로 상위 클래스 대신 하위 클래스를 사용할 수 있도록 지원합니다.

Apache CXF가 대체 그룹 및 Java 유형 계층 구조에 대한 유형을 생성하는 방법 때문에 클라이언트는 특수 코드를 사용하지 않고 checkWidgets() 를 호출할 수 있습니다. checkWidgets() 를 호출할 논리를 개발할 때 위젯 대체 그룹을 지원하기 위해 생성된 클래스 중 하나의 개체로 전달할 수 있습니다.

예 37.14. “consumer Invoking checkWidgets() checkWidgets() 를 호출하는 소비자를 표시합니다.

예 37.14. consumer Invoking checkWidgets()

System.out.println("What type of widgets do you want to order?");
System.out.println("1 - Normal");
System.out.println("2 - Wood");
System.out.println("3 - Plastic");
System.out.println("Selection [1-3]");
String selection = reader.readLine();
String trimmed = selection.trim();
char widgetType = trimmed.charAt(0);
switch (widgetType)
{
  case '1':
  {
    WidgetType widget = new WidgetType();
    ...
    break;
  }
  case '2':
  {
    WoodWidgetType widget = new WoodWidgetType();
    ...
    break;
  }
  case '3':
  {
    PlasticWidgetType widget = new PlasticWidgetType();
    ...
    break;
  }
  default :
    System.out.println("Invaid Widget Selection!!");
}

proxy.checkWidgets(widgets);

37.3.2.3. 서비스 구현

checkWidgets() 서비스의 구현은 위젯 Type 오브젝트로 위젯 설명을 가져오고, 위젯의 인벤토리를 확인하고, 주식의 위젯 수를 반환합니다. 대체 그룹을 구현하는 데 사용되는 모든 클래스는 동일한 기본 클래스에서 상속되므로 JAXB 특정 API를 사용하지 않고 checkWidgets() 를 구현할 수 있습니다.

위젯에 대한 대체 그룹의 멤버를 지원하기 위해 생성된 모든 클래스는 위젯 Type 클래스 확장합니다. 이 사실 때문에 instanceof 를 사용하여 전달된 위젯 유형을 확인하고, 필요한 경우 widgetPart 오브젝트를 보다 제한적인 유형으로 캐스팅할 수 있습니다. 적절한 유형의 오브젝트가 있으면 위젯의 올바른 종류를 확인할 수 있습니다.

예 37.15. “CheckWidgets()의 서비스 구현() 가능한 구현을 보여줍니다.

예 37.15. CheckWidgets()의 서비스 구현()

public int checkWidgets(WidgetType widgetPart)
{
  if (widgetPart instanceof WidgetType)
  {
    return checkWidgetInventory(widgetType);
  }
  else if (widgetPart instanceof WoodWidgetType)
  {
    WoodWidgetType widget = (WoodWidgetType)widgetPart;
    return checkWoodWidgetInventory(widget);
  }
  else if (widgetPart instanceof PlasticWidgetType)
  {
    PlasticWidgetType widget = (PlasticWidgetType)widgetPart;
    return checkPlasticWidgetInventory(widget);
  }
}
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.