001
002 /*
003 * Copyright (C) 2011 Archie L. Cobbs. All rights reserved.
004 *
005 * $Id: PrimitiveSwitchAdapter.java 65 2011-03-26 22:30:10Z archie.cobbs $
006 */
007
008 package org.dellroad.stuff.java;
009
010 /**
011 * Adapter class for {@link PrimitiveSwitch} implementations.
012 *
013 * @param <R> switch method return type
014 * @since 1.0.65
015 */
016 public class PrimitiveSwitchAdapter<R> implements PrimitiveSwitch<R> {
017
018 /**
019 * Handle the {@link Primitive#BOOLEAN} case.
020 * The implementation in {@link PrimitiveSwitchAdapter} delegates to {@link #caseDefault}.
021 */
022 @Override
023 public R caseBoolean() {
024 return caseDefault();
025 }
026
027 /**
028 * Handle the {@link Primitive#BYTE} case.
029 * The implementation in {@link PrimitiveSwitchAdapter} delegates to {@link #caseNumber}.
030 */
031 @Override
032 public R caseByte() {
033 return caseNumber();
034 }
035
036 /**
037 * Handle the {@link Primitive#CHARACTER} case.
038 * The implementation in {@link PrimitiveSwitchAdapter} delegates to {@link #caseDefault}.
039 */
040 @Override
041 public R caseCharacter() {
042 return caseDefault();
043 }
044
045 /**
046 * Handle the {@link Primitive#SHORT} case.
047 * The implementation in {@link PrimitiveSwitchAdapter} delegates to {@link #caseNumber}.
048 */
049 @Override
050 public R caseShort() {
051 return caseNumber();
052 }
053
054 /**
055 * Handle the {@link Primitive#INTEGER} case.
056 * The implementation in {@link PrimitiveSwitchAdapter} delegates to {@link #caseNumber}.
057 */
058 @Override
059 public R caseInteger() {
060 return caseNumber();
061 }
062
063 /**
064 * Handle the {@link Primitive#FLOAT} case.
065 * The implementation in {@link PrimitiveSwitchAdapter} delegates to {@link #caseNumber}.
066 */
067 @Override
068 public R caseFloat() {
069 return caseNumber();
070 }
071
072 /**
073 * Handle the {@link Primitive#LONG} case.
074 * The implementation in {@link PrimitiveSwitchAdapter} delegates to {@link #caseNumber}.
075 */
076 @Override
077 public R caseLong() {
078 return caseNumber();
079 }
080
081 /**
082 * Handle the {@link Primitive#DOUBLE} case.
083 * The implementation in {@link PrimitiveSwitchAdapter} delegates to {@link #caseNumber}.
084 */
085 @Override
086 public R caseDouble() {
087 return caseNumber();
088 }
089
090 /**
091 * Internal roll-up method.
092 * The implementation in {@link PrimitiveSwitchAdapter} delegates to {@link #caseDefault}.
093 */
094 protected R caseNumber() {
095 return caseDefault();
096 }
097
098 /**
099 * Internal roll-up method.
100 * The implementation in {@link PrimitiveSwitchAdapter} returns {@code null}.
101 */
102 protected R caseDefault() {
103 return null;
104 }
105 }
106