我想创建一个Java类,该类除了具有整数类型之外,还允许具有一些Enums(即特殊值),有点像Double。
考虑要记住整数0、1,100、1000或特殊值(例如“ 0000”或“ /”或“ VAR”)的情况;
答案 0 :(得分:0)
我想您的课程必须包含那些类型?如:
public class ExampleClass
{
// Instance Variables
int intTypeVar;
String stringTypeVar;
double doubleTypeVar;
// Constructor Declaration of Class
public ExampleClass (int intTypeVar, String stringTypeVar,
double doubleTypeVar)
{
this.intTypeVar= intTypeVar;
this.stringTypeVar= stringTypeVar;
this.doubleTypeVar= doubleTypeVar;
}
答案 1 :(得分:0)
您可以这样创建自己的专有类型:
public class State {
JUST_AN_INTEGER,
CHEESE,
SOMETHING_ELSE;
}
public final class MyInteger {
private final int value;
private final State state;
private MyInteger(int value) {
this.value = value;
this.state = State.JUST_AN_INTEGER;
}
private MyInteger(State state) {
if (state == null) {
throw new IllegalArgumentException("State must be non-null");
} else if (state == State.JUST_AN_INTEGER) {
throw new IllegalArgumentException(State.JUST_AN_INTEGER + " requires a value!");
}
this.state = state;
}
public int getValue() {
if (state != State.JUST_AN_INTEGER) {
throw new IllegalStateException("MyValue has no value, it is of state " + state");
}
return value;
}
public int getState() {
return this.state;
}
@Override
public int hashCode() {
return this.value ^ this.state.hashCode();
}
@Override
public int equals(Object o) {
if (!(o instanceof MyInteger)) {
return false;
}
MyInteger other = (MyInteger) o;
return other.state == this.state && other.value == this.value;
}
@Override
public String toString() {
if (this.state == State.JUST_AN_INTEGER) {
return String.valueOf(this.value);
}
return this.state.name();
}
}
此MyInteger
可以具有正常整数值,也可以是其他状态之一。构造函数确保仅以一致的方式进行构造(例如,您不希望没有显式值的JUST_AN_INTEGER
构造,并且同样,您不希望CHEESE
状态也包含一个值) )。
您可以也实现Number
类,但这将导致各种令人困惑的行为,因为在许多情况下,它的行为不像普通的Number