JAVA enum 操作

空清城 发布于 2013/07/15 12:18
阅读 785
收藏 0

class Person{ 
 public enum Sex{
  Man,Women;
  }
 private String name;
 private int age;
 private String sex;
 public Person(String name, int age,String sex){
   this.setName(name);
   this.setAge(age);
   this.setSex(sex);
 }
 public void setAge(int age) {
  this.age = age;
 }public void setName(String name) {
  this.name = name;
 }public int getAge() {
  return age;
 }public String getName() {
  return name;
 }public String getSex() {
  return sex;
 }
 
 public void setSex(String sex) {
    if("Man".equals(sex)){
     this.sex=sex;  
     }      
   }
}
 

public class lianxi1 { 
    public static void main(String[] args) {
    Person p=new Person("zhangsan",20,"Man");
       System.out.println(p.getName()+" "+p.getAge()+" "+p.getSex());   
    }
}

对于 enum 类的使用 不太了解 。

对于上面的例子 虽然有一个 setSex(String sex)  方法 ,

但是这个方法没有用到enum类。

想请教一下各位:如果我想在 setSex(String sex)方法中使用ENUM类规定输入的值,

这段代码该如何修改?

新手上路,请各位哥哥姐姐们多多关照。

无论是否给出谢答案先谢过各位看完我的这些废话。

 

加载中
0
francis-x
francis-x
把Person升级为public权限,然后enum类型就是Person.Sex
空清城
空清城
你的这个方法可行。。我自己修改了一下代码。 很好用 谢了 !!!
0
徐迎龙
徐迎龙

java 的Enum 我这里有一个

package com.booleansoft.core.db;


import com.booleansoft.application.server.conf.XWFConfig;
import com.booleansoft.util.*;
public class DBModel {
private DBdialect dbdialect;
private String alias;
private String url;


public static DBModel getDefaultDBModel() {
String driver =Config._databaseServerConf.getDriver();
String username = Config._databaseServerConf.getUserName();
String password = Config._databaseServerConf.getPassword();
String url =Config._databaseServerConf.getUrl();
String supply = Config._databaseServerConf.getSupply();
DBModel m = new DBModel("xt_server", driver, url, username, password);
m.setMaxCount(NumberHelper.getIntValue(Config._databaseServerConf.getMaxcount(),300));
m.setMinCount(NumberHelper.getIntValue(Config._databaseServerConf.getMincount(),50));
m.setDbdialect(DBModel.getDbdialect(supply));
return m;
}


public DBdialect getDbdialect() {
return dbdialect;
}


public static DBdialect getDbdialect(String name) {
if (name.toLowerCase().indexOf("sqlserver") > -1) {
return DBdialect.SQLServer2005;
} else if (name.toLowerCase().indexOf("oracle") > -1) {
return DBdialect.ORACLE;
} else if (name.toLowerCase().indexOf("mysql") > -1) {
return DBdialect.MYSQL;
}
return null;
}


public void setDbdialect(DBdialect dbdialect) {
this.dbdialect = dbdialect;
}


private String username;
private String password;
private String driver;


public DBModel(String alias, String driver, String url, String username,
String password) {
super();
this.alias = alias;
this.driver = driver;
this.url = url;
this.username = username;
this.password = password;


}


private int maxCount = 20;
private int minCount = 5;


public String getAlias() {
return alias;
}


public void setAlias(String alias) {
this.alias = alias;
}


public String getUrl() {
return url;
}


public void setUrl(String url) {
this.url = url;
}


public String getUsername() {
return username;
}


public void setUsername(String username) {
this.username = username;
}


public String getPassword() {
return password;
}


public void setPassword(String password) {
this.password = password;
}


public String getDriver() {
return driver;
}


public void setDriver(String driver) {
this.driver = driver;
}


public int getMaxCount() {
return maxCount;
}


public void setMaxCount(int maxCount) {
this.maxCount = maxCount;
}


public int getMinCount() {
return minCount;
}


public void setMinCount(int minCount) {
this.minCount = minCount;
}


public static enum DBdialect {
ORACLE {
@Override
public String getName() {
return "OracleDialect";
}
@Override
public String getSimpleName() {
return "oracle";
}
},
SQLServer {
@Override
public String getName() {
return "SQLServerDialect";
}
@Override
public String getSimpleName() {
return "sqlserver";
}
},
SQLServer2005 {
@Override
public String getName() {
return "SQLServer2005Dialect";
}
@Override
public String getSimpleName() {
return "sqlserver";
}
},
MYSQL {
@Override
public String getName() {
return "MySQLDialect";
}
@Override
public String getSimpleName() {
return "mysql";
}
};
public abstract String getName();
public abstract String getSimpleName();
}
}

空清城
空清城
代码有点长啊 , 有点晕 不过问题已经解决 谢谢你了哦
0
空清城
空清城

对于以上的代码想要使用ENUM 类

可以使用FOREACH输出 利用.name 方法返回name 属性与输入的值比较就行了、

在此感谢 梦无涯 徐迎龙 先生的解惑

 for(Sex s:Sex.values()){
     if(s.name().equals(sex)){
      this.sex=sex;
      break;
     }else{
      System.out.println("性别输入错误");
      break;
     }     

 

PS:问题已解决。。

返回顶部
顶部