f.e.와 같은 매개 변수에 특정 값만 사용하는 메서드를 작성하려고합니다. Android의 Toast
클래스에 있습니다. 방법 makeText(Context context, int resId, int duration)
의 지속 시간으로 Toast.LENGTH_SHORT
또는 Toast.LENGTH_LONG
만 사용할 수 있습니다. Toast
클래스의 소스 코드를 살펴 보았지만 아무 것도 발견하지 못했습니다. 어떻게하면 될까요?Java의 메소드에 대한 매개 변수로 특정 값만 허용하는 방법은 무엇입니까?
답변
사용 자바 튜토리얼에서 Enum Type,
,열거 형 변수가 미리 정의 된 상수 집합이 될 수 있도록 할 수있는 특수 데이터 유형입니다. 변수는 미리 정의 된 값 중 하나와 같아야합니다. 일반적인 예에는 나침반 방향 (NORTH, SOUTH, EAST 및 WEST의 값)과 요일이 포함됩니다. 예를 들어
public enum MyEnum {
ONE, TWO;
}
public static void myMethod(MyEnum a) {
// a must be MyEnum.ONE or MyEnum.TWO (in this example)
}
편집
당신이 뭔가 (시간 상수를 컴파일해야하는) 필드 레벨 값을 추가 할 수 있습니다 열거 유형에서 문자열 (들)을 얻으려면 like,
public enum MyEnum {
ONE("uno"), TWO("dos");
MyEnum(String v) {
value = v;
}
private String value;
public String getValue() {
return value;
}
}
매개 변수가 특정 유형이어야한다고 가정 해 봅시다. 열거 형으로 어떻게 할 수 있습니까? 그게 가능한가? – kaolick
@kaolick Enum (s) String 값을 줄 수는 있지만 Enum 유형 (실제로 상수 임)이어야합니다. 예를 들어 설명하겠습니다. –
@kaolick 토스트에 커스텀 값을 부여 하시겠습니까? – Raghunandan
Toast 클래스와 마찬가지로 int를 사용하려면 s 이 같은 omething :
public class MyClass {
//by convention, constant names are all caps
public static final int VALUE_ONE = 0;
public static final int VALUE_TWO = 1;
public void myMethod(int value) throws InvalidParameterException {
if(value != VALUE_ONE || value != VALUE_TWO) {
throw new InvalidParameterException();
//or set default value instead of throwing an exception
}
else {
//your code
}
}
}
VALUE_ONE
및 VALUE_TWO
는 전체 응용 프로그램을 통해 당신은 C를 알고 있다면, 그것은 유사하다 (이 해당 변수의 하나 개의 인스턴스가 될 것이며, 그 값이 변하지 않는 것을 의미, 정적 및 최종 있습니다 ~ #DEFINE
). 따라서, 누군가가 MyClass.VALUE_ONE
을 인수로 전달할 때마다, 항상 호출자가 상수 뒤에 정수 값을 알 필요는 없지만 정확히 무엇인지 알 수 있습니다. 그리고 전달 된 것이 유효한 값 중 하나인지 확인하기 위해 런타임 검사를하고, 그렇지 않은 경우 예외를 던지기를 원할 것입니다. 또는 전달 된 값이 그다지 중요하지 않은 경우 예외가 발생하지 않고 인수가 정확하지 않은 경우 기본값을 설정할 수 있습니다.
알겠습니다. 나는 마음에 그와 같은 것을 잡아 먹는다. 그러나 예외를 던지는 것과 같은 것을 피할 수있는 해결책을 찾고 있었다. 그래서 저는 Enum 솔루션을 사용할 것입니다. 그러나 누군가가 Enum을 사용하지 않으려는 경우 솔루션이 올바른 것처럼 보입니다. 문제는 특별히 내가 안드로이드에 대한 답을 제공 안드로이드에 대한 질문을 받았다 @OmarElDon – kaolick
이 같이 당신의 방법에 대한 @IntDef 또는 @StringDef 주석을 사용할 수 있습니다
@Retention(SOURCE)
@IntDef({NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS})
public @interface NavigationMode {}
public static final int NAVIGATION_MODE_STANDARD = 0;
public static final int NAVIGATION_MODE_LIST = 1;
public static final int NAVIGATION_MODE_TABS = 2;
...
public abstract void setNavigationMode(@NavigationMode int mode);
@NavigationMode
public abstract int getNavigationMode();
정확한 대답은, 죄송합니다, 100 % 정확하지 않고 다른 하나 –
의 인정하지만, 안드로이드 –
에 대한 올바른해야합니다. 질문의 태그를 볼 수 있습니다. –
- 1. 실제 메소드를 Java의 다른 메소드에 매개 변수로 전달하는 방법은 무엇입니까?
- 2. 메소드에 대한 매개 변수로 다른 컨트롤 보내기
- 3. Java의 메소드에 대한 참조
- 4. 콤보 박스에서 유효한 값만 허용하는 방법은 무엇입니까?
- 5. 출력 매개 변수로 컨테이너 유형을 받아들이는 메소드에 대한 프로토콜/규약
- 6. 특정 컴퓨터에 대한 액세스를 허용하는 방법은 무엇입니까?
- 7. Java의 BlackberryTipCalculator에서 정수 값만 입력하는 방법은 무엇입니까?
- 8. Java의 특정 서브 클래스 메소드에 액세스하는 방법은 무엇입니까?
- 9. PowerShell : "ByPropertyName"입력을 허용하는 매개 변수로 개체를 파이프하는 방법은 무엇입니까?
- 10. Java의 generic 매개 변수로 캐스팅
- 11. junit 4의 메소드에 매개 변수로 enum 값을 전달하는 방법은 무엇입니까?
- 12. 하나의 메소드를 다른 메소드에 매개 변수로 전달하는 방법은 무엇입니까?
- 13. 여러 람다 식을 매개 변수로 허용하는 메서드를 만드는 방법은 무엇입니까?
- 14. Java의 WADL 파일에서 메소드에 액세스하는 방법은 무엇입니까?
- 15. 반환 형식을 java의 매개 변수로 전달 하시겠습니까?
- 16. 몇 가지 특정 값만 허용하는 최상의 데이터 형식은 무엇입니까?
- 17. Neo4J에서 Java의 사이퍼 쿼리에서 매개 변수로 레이블을 설정하는 방법은 무엇입니까?
- 18. Java의 데이터 기반 테스트에서 매개 변수로 배열을 전달하는 방법은 무엇입니까?
- 19. Apache CXF의 매개 변수로 메소드에 대한 요청을 매핑하십시오.
- 20. 매개 변수로 아무것도 허용하는 셸 스크립트
- 21. Java의 제네릭 메서드에 대한 형식 매개 변수로 형식 매개 변수로 전달하는 클래스
- 22. 여러 유형의 객체를 메소드에 매개 변수로 전달
- 23. reflect.runtime.universe.MethodMirror 유형의 함수를 매개 변수로 메소드에 전달
- 24. Ruby의 메소드에 해시 값을 매개 변수로 전달
- 25. 암호로 보호 된 사이트에서 특정 추천 도메인을 허용하는 방법은 무엇입니까?
- 26. 함수를 매개 변수로 허용하는 함수 호출
- 27. Integer와 Java의 메소드에 대한 참조 전달
- 28. 특정 태그 값만 구문 분석하는 방법은 무엇입니까?
- 29. JSpinner에서 양수 값만 허용하는 방법?
- 30. NSError를 예상하는 메소드에 매개 변수로 전달해야하는 것은 무엇입니까 **?
을 당신은 프레임 워크에서 제공 이외의 다른 일정 시간 동안 토스트를 보여주고 싶은? – Raghunandan
열거 형을 사용할 수 있습니다. http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html – mromer