我确定这个问题已经在某个地方得到了回答,但是我已经回答过了。我现在已经搜索了半个小时而且我的关键字用完了,因为我绝对不知道如何做到这一点。
我有一个像这样的类的构造函数
public MyClass (String name)
{}
我想要的是定义字符串,以便只输入那些字符串。
我认为它与静态最终字符串有关,但是有很多东西要找到,我不知道如何缩小搜索范围。请告诉我如何调用我要做的事情,以便我可以搜索它。
编辑: 我想要的例子: 我想以某种方式定义一些字符串。 (或者做一些具有相同效果的其他事情,正如我所说,我不知道该怎么做)
String one =" ExampleOne&#34 ;; 字符串二=" ExampleTwo&#34 ;;
这样当我调用构造函数
时MyClass myClass = new MyClass("somethingElse");
构造函数不会接受它。或者甚至更好的日食已经显示我有什么选择我喜欢它做什么"颜色。 "
答案 0 :(得分:1)
有两种方法可以实现这一点,或者使用枚举作为构造函数参数。枚举本身只包含允许的值,这就是我要做的,保持everythign不错的oop,你可以在以后为枚举添加逻辑。
或者您可以通过执行比较并在不允许的值中抛出异常来检查构造函数参数值是否有效。有一个预定义的列表然后,myList.contains(myString) - 如果为false则抛出异常。
答案 1 :(得分:1)
是的,你有权利你不能覆盖String
类,因为它是final
所以你可以创建自己的StringWrapper
类来包装字符串。
public class StringWrapper{
private String content;
public StringWrapper(String c){
content = c;
}
//all your methods and fields there, for example delegated methods
public String toString(){
return content.toString();
}
}
但Enum
也适用于您的情况,然后您定义Enum
值
public enum Color {
WHITE, BLACK, RED, YELLOW, BLUE; //; is required here.
@Override public String toString() {
//only capitalize the first letter
String s = super.toString();
return s.substring(0, 1) + s.substring(1).toLowerCase();
}
}
public myClass (Color color)
{}
答案 2 :(得分:0)
我想要的是定义String,以便只输入那些字符串
我认为你所追求的是Enums
。
枚举将允许您定义一系列值,然后您可以使用这些值。在我已经链接的示例中,开发人员可以将他/她将收到的输入类型限制为一周中的几天。
答案 3 :(得分:0)
您可以在运行时在构造函数的主体中检查它,或者如果您想进行编译时检查,那么您可以使用enum类型参数(枚举是一组预定义的常量)。
答案 4 :(得分:0)
根据我的理解,似乎你想限制字符串可以是什么。
你可以通过在构造函数中放入条件语句来清除你不想输入的任何字符串,这些字符串会通知用户它是无效的字符串或抛出异常,以及构造函数的其余部分。只有在通过所有测试并确保它是有效的字符串
后,才会在else语句中执行