Java字符串预定义

Java字符串预定义,java,string,Java,String,我确信这个问题已经在某个地方得到了回答,但我已经搜索了半个小时,我的关键词已经用光了,因为我完全不知道该怎么做 我有这样一个类的构造函数 public MyClass (String name) {} 我想要的是定义字符串,以便只能输入这些字符串 我假设它与静态的final字符串有关,但是有很多东西可以找到,我不知道如何缩小搜索范围。请告诉我我想做的事情叫什么,这样我就可以搜索它了 编辑: 我想要的例子: 我想以某种方式定义一些字符串。(或者做一些其他有同样效果的事情,就像我说的,我不知道怎么

我确信这个问题已经在某个地方得到了回答,但我已经搜索了半个小时,我的关键词已经用光了,因为我完全不知道该怎么做

我有这样一个类的构造函数

public MyClass (String name)
{}
我想要的是定义字符串,以便只能输入这些字符串

我假设它与静态的final字符串有关,但是有很多东西可以找到,我不知道如何缩小搜索范围。请告诉我我想做的事情叫什么,这样我就可以搜索它了

编辑: 我想要的例子: 我想以某种方式定义一些字符串。(或者做一些其他有同样效果的事情,就像我说的,我不知道怎么做)

String one=“ExampleOne”; String two=“ExampleTwo”

所以当我打电话给警察的时候

MyClass myClass = new MyClass("somethingElse");

建造师不会接受它。或者更好的方法是eclipse allready显示我的选项,我喜欢它使用“颜色”。

有两种方法可以实现这一点,或者使用枚举作为构造函数参数。枚举本身只包含允许的值,这就是我要做的,保持EverythSign为oop,您可以在以后向枚举添加逻辑

或者,您也可以通过执行比较并抛出异常(如果不在允许的值中)来检查constructor parameters值是否有效。有一个预先定义的列表,然后,myList.contains(myString)-如果为false,则抛出异常

我想要的是定义字符串,以便只输入那些字符串

我想你想要的是


枚举将允许您定义一系列值,然后可以使用这些值。在我链接的示例中,开发人员可以将他/她将接收的输入类型限制为一周中的几天。

您可以在运行时在构造函数的主体中检查它,或者如果您希望编译时间检查,则可以使用类型参数(enum是一组预定义的常量).

是的,您有权您不能重写
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)
{}

据我所知,你似乎想限制字符串的长度


您可以通过在构造函数中放置条件语句来清除不希望输入的字符串,这些字符串会通知用户该字符串无效或引发异常,构造函数的其余部分只有在通过所有测试并确保它是有效字符串后才会在else语句中执行

您的问题令人困惑。。您能提供一个例子吗?您希望传递的字符串具有特定的值吗?如果它们没有一些值,字符串将不被接受?非常感谢您的快速回答!我只是忘了。问题是,仅使用(字符串名称)字符串就可以包含任何内容。但是我想稍后比较字符串,所以我想确保只能将正确的字符串提供给构造函数。枚举的事情听起来只是撒谎,我会尝试这样做的,谢谢。