A. java 關於枚舉,這段代碼到底是怎樣執行的
你可以把枚舉當作是一種類型,比如enum Size你可以看作class Size這樣的聲明。
然後,SMLL("S")是什麼意思呢,就相當於你在class Size這個類內部定義了這樣一個常量對象:
public static final Size SMLL = new Size("S");
只不過用枚舉的話這樣這樣的聲明方式被簡成SMLL("S"),這是聲明枚舉常量的方式,比較簡單。就是說這樣等於是調用了private Size(String abbreviation) {this.abbreviation = abbreviation; }這個構造函數。
B. java中的枚舉如何根據數字得到文本值
把枚舉轉換成int型就可以了 。
枚舉值是常量,不是變數。不能在程序中用賦值語句再對它賦值。例如對枚舉weekday的元素再作以下賦值: sun=5;mon=2;sun=mon; 都是錯誤的。
枚舉元素本身由系統定義了一個表示序號的數值,從0 開始順序定義為0,1,2…。如在weekday中,sun值為0,mon值為1, …,sat值為6。
如
String str = sun;
int week;
if(str.equals(枚舉值)){
week = 0;
}
C. Java枚舉類型怎麼使用
舉(enum)類型是Java 5新增的特性,它是一種新的類型,允許用常量來表示特定的數據片斷,而且全部都以類型安全的形式來表示。
1、常量的使用
在JDK1.5之前,我們定義常量都是:public static fianl....。現在好了,有了枚舉,可以把相關的常量分組到一個枚舉類型里,而且枚舉提供了比常量更多的方法。
總結:
1、枚舉的本質是類,在沒有枚舉之前,仍然可以按照java最基本的編程手段來解決需要用到枚舉的地方。枚舉屏蔽了枚舉值的類型信息,不像在用public static final定義變數必須指定類型。枚舉是用來構建常量數據結構的模板,這個模板可擴展。枚舉的使用增強了程序的健壯性,比如在引用一個不存在的枚舉值的時候,編譯器會報錯。枚舉的更多用法還需要在開發中去研究創造,Java5、Java6增加了不少新的特性,技術在升級,對程序員來說就要學習,如果你熱愛java的話。否則別人用到新特性的代碼你看不懂,那才叫郁悶。
2、枚舉在Java家族中只佔了很小的一塊比重,所以我在項目中用枚舉的地方不是很多,畢竟,一個項目是很多人開發維護的,用一個陌生的東西,會給其他的同事造成閱讀困難。所以常量大都是用public static final 來定義的。
D. java resultset 獲取枚舉型數據
樓上的。。mysql里有這種類型,是一種字元串類數據列類型
ENUM('value1','value2',...) 65535個成員 1或2位元組
但是用的比較少。。。
你得寫程序自己處理下,大概是下邊這樣
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class EnumTesting {
Connection connection;
Statement statement;
public EnumTesting() {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager
.getConnection("jdbc:mysql://192.168.1.25/test?user=spider&password=spider");
} catch (Exception e) {
System.err.println("Unable to find and load driver");
System.exit(1);
}
}
public void doWork() {
try {
statement = connection.createStatement();
ResultSet rs = statement
.executeQuery("SHOW COLUMNS FROM enumtest LIKE 'status'");
rs.next();
String enums = rs.getString("Type");
System.out.println(enums);
int position = 0, count = 0;
String[] availableEnums = new String[10];
while ((position = enums.indexOf("'", position)) > 0) {
int secondPosition = enums.indexOf("'", position + 1);
availableEnums[count++] = enums.substring(position + 1,
secondPosition);
position = secondPosition + 1;
System.out.println(availableEnums[count - 1]);
}
rs.close();
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Enum e = new Enum();
e.doWork();
}
}
E. java中如何將枚舉值用循環輸出
java中可以私用enummap來保存枚舉值,示例如下:
privatestaticvoidtestEnumMap(){
//1.演示定義EnumMap對象,EnumMap對象的構造函數需要參數傳入,默認是key的類的類型
EnumMap<Light,String>currEnumMap=newEnumMap<Light,String>(
Light.class);
currEnumMap.put(Light.RED,"紅燈");
currEnumMap.put(Light.GREEN,"綠燈");
currEnumMap.put(Light.YELLOW,"黃燈");
//2.遍歷對象
for(LightaLight:Light.values()){
System.out.println("[key="+aLight.name()+",value="
+currEnumMap.get(aLight)+"]");
}
}
F. java springmvc 頁面枚舉類型作為怎樣查詢條件並傳遞參數到controller
一,從controller往視圖傳遞值,controller---->視圖
1)簡單類型,如int,String,直接寫在controller方法的參數里,是無法傳遞到視圖頁面上的(經測試)。
(而用@RequestParam("name")註解,可以從視圖上,或地址中加?name=***傳遞到controller方法里)
2)可以用Map<String,Object>,其鍵值可以在頁面上用EL表達式${鍵值名}得到,
3)也可以用Model類對象來傳遞,有addAttribute(key,value)方法,其鍵值可以在頁面上用EL表達式${鍵值名}得到,
如果用addAttribute(value)這個方法,會將類型名的首字母改成小寫後,作為鍵值名傳遞過去,例如"ok"在頁面上用${string}得到,而一個復合類對象,如User類對象,頁面上用${user}得到該對象,用${user.propertyName}得到其屬性,這是用Model的一大優勢。
例如,model.addAttribute(newUser("my姓名","我的愛好有游泳打球"));
這樣頁面上就能用${user.name}和${user.hobby}列印對應屬性
@RequestMapping(value={"/","/hello"})
publicStringhello(intid,Map<String,Object>map){
System.out.println(id);
System.out.println("hello");
map.put("hello","world");
return"hello";
}
@RequestMapping(value="/say")
publicStringsay(@RequestParamintid,Modelmodel){
System.out.println("say");
model.addAttribute("hello","value");
//使用Object的類型作為key,String-->string
model.addAttribute("ok");
return"hello";
}www.2cto.com
G. Java中枚舉類型怎麼賦值
publicenumPath{
PATH1("/home/acer/logs1"),
PATH2("/home/acer/logs2"),
PATH3("/home/acer/logs3"),
PATH4("/home/acer/logs4");
privateStringpath;
Path(Stringpath){
this.path=path;
}
publicStringgetPath(){
returnpath;
}
//測試方法
publicstaticvoidmain(String[]args){
System.out.println(Path.PATH1.getPath());
System.out.println(Path.PATH2.getPath());
System.out.println(Path.PATH3.getPath());
System.out.println(Path.PATH4.getPath());
}
}
H. Java中怎樣由枚舉常量的ordinal值獲得枚舉常量對象
enum Season {
SPRING, SUMMER, AUTUMN, WINTER;
public static Season valueOf(int ordinal) {
if (ordinal < 0 || ordinal >= values().length) {
throw new IndexOutOfBoundsException("Invalid ordinal");
}
return values()[ordinal];
}
}
I. java枚舉問題
package com.ljq.test;
/**
* 枚舉用法詳解
*
* @author jiqinlin
*
*/
public class TestEnum {
/**
* 普通枚舉
*
* @author jiqinlin
*
*/
public enum ColorEnum {
red, green, yellow, blue;
}
/**
* 枚舉像普通的類一樣可以添加屬性和方法,可以為它添加靜態和非靜態的屬性或方法
*
* @author jiqinlin
*
*/
public enum SeasonEnum {
//註:枚舉寫在最前面,否則編譯出錯
spring, summer, autumn, winter;
private final static String position = "test";
public static SeasonEnum getSeason() {
if ("test".equals(position))
return spring;
else
return winter;
}
}
/**
* 性別
*
* 實現帶有構造器的枚舉
*
* @author jiqinlin
*
*/
public enum Gender{
//通過括弧賦值,而且必須帶有一個參構造器和一個屬性跟方法,否則編譯出錯
//賦值必須都賦值或都不賦值,不能一部分賦值一部分不賦值;如果不賦值則不能寫構造器,賦值編譯也出錯
MAN("MAN"), WOMEN("WOMEN");
private final String value;
//構造器默認也只能是private, 從而保證構造函數只能在內部使用
Gender(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
/**
* 訂單狀態
*
* 實現帶有抽象方法的枚舉
*
* @author jiqinlin
*
*/
public enum OrderState {
/** 已取消 */
CANCEL {public String getName(){return "已取消";}},
/** 待審核 */
WAITCONFIRM {public String getName(){return "待審核";}},
/** 等待付款 */
WAITPAYMENT {public String getName(){return "等待付款";}},
/** 正在配貨 */
ADMEASUREPRODUCT {public String getName(){return "正在配貨";}},
/** 等待發貨 */
WAITDELIVER {public String getName(){return "等待發貨";}},
/** 已發貨 */
DELIVERED {public String getName(){return "已發貨";}},
/** 已收貨 */
RECEIVED {public String getName(){return "已收貨";}};
public abstract String getName();
}
public static void main(String[] args) {
//枚舉是一種類型,用於定義變數,以限制變數的賦值;賦值時通過「枚舉名.值」取得枚舉中的值
ColorEnum colorEnum = ColorEnum.blue;
switch (colorEnum) {
case red:
System.out.println("color is red");
break;
case green:
System.out.println("color is green");
break;
case yellow:
System.out.println("color is yellow");
break;
case blue:
System.out.println("color is blue");
break;
}
//遍歷枚舉
System.out.println("遍歷ColorEnum枚舉中的值");
for(ColorEnum color : ColorEnum.values()){
System.out.println(color);
}
//獲取枚舉的個數
System.out.println("ColorEnum枚舉中的值有"+ColorEnum.values().length+"個");
//獲取枚舉的索引位置,默認從0開始
System.out.println(ColorEnum.red.ordinal());//0
System.out.println(ColorEnum.green.ordinal());//1
System.out.println(ColorEnum.yellow.ordinal());//2
System.out.println(ColorEnum.blue.ordinal());//3
//枚舉默認實現了java.lang.Comparable介面
System.out.println(ColorEnum.red.compareTo(ColorEnum.green));//-1
//--------------------------
System.out.println("===========");
System.err.println("季節為" + SeasonEnum.getSeason());
//--------------
System.out.println("===========");
for(Gender gender : Gender.values()){
System.out.println(gender.value);
}
//--------------
System.out.println("===========");
for(OrderState order : OrderState.values()){
System.out.println(order.getName());
}
}
}
J. 用java寫一個枚舉類程序
packagecom.school.stereotype;
/**
*活動枚舉類型
*@authorQiXuan.Chen
*/
publicenumEventStatus{
/**
*未發布。
*/
DRAFT("DRAFT","未發布"),
/**
*已發布。
*/
PUBLISHED("PUBLISHED","已發布");
/**
*活動狀態的值。
*/
privateStringvalue;
/**
*活動狀態的中文描述。
*/
privateStringtext;
/**
*@paramstatus活動狀態的值
*@paramdesc活動狀態的中文描述
*/
privateEventStatus(Stringstatus,Stringdesc){
value=status;
text=desc;
}
/**
*@return當前枚舉對象的值。
*/
publicStringgetValue(){
returnvalue;
}
/**
*@return當前狀態的中文描述。
*/
publicStringgetText(){
returntext;
}
/**
*根據活動狀態的值獲取枚舉對象。
*
*@paramstatus活動狀態的值
*@return枚舉對象
*/
(Stringstatus){
EventStatus[]allStatus=EventStatus.values();
for(EventStatusws:allStatus){
if(ws.getValue().equalsIgnoreCase(status)){
returnws;
}
}
("status值非法,沒有符合課程狀態的枚舉對象");
}
}