java 入參 是 枚舉_java 枚舉 參數傳遞

展開全部

這樣做是不行的,原因是:Java中的對象實例化都是在堆中,如果是普通的類實例變量,比如在方法636f707962616964757a686964616f313333376166371中定義的普通類實例變量,傳到了方法2中,由于方法1和方法2中的實例變量對應著堆中的同一個對象實例,所以方法2中修改了對象實例的值,方法1中的值也會跟著變化。但是java中的枚舉不是這樣子的。比如下面的代碼:public?class?EnumClass?{

public?static?void?main(String?[]?args){

Color?color?=?Color.RED;

convert(color);

System.out.println(color.name());

}

public?static?void?convert(Color?c){

System.out.println(c.name());

c?=?Color.BLUE;

}

}

enum?Color{

RED,BLUE,GREEN;

}

如你問題中表述的,兩次輸出都是RED。具體原因,我們可以用javap反編譯一下這個類。得到下面的代碼Compiled?from?"EnumClass.java"

final?class?org.concurrency.art.Color?extends?java.lang.Enum?{

public?static?final?org.concurrency.art.Color?RED;

public?static?final?org.concurrency.art.Color?BLUE;

public?static?final?org.concurrency.art.Color?GREEN;

public?static?org.concurrency.art.Color[]?values();

public?static?org.concurrency.art.Color?valueOf(java.lang.String);

static?{};

}

可以看到枚舉其實也是用class實現的。而枚舉的值是這個類的static final型的常量。當EnumClass這個類加載后,虛擬機就會在堆區創建這三個實例化變量。這就可以回答為什么改變后無效了。main方法把color變量傳遞給convert方法的c時,兩者是指向堆區中的同一個地址,也就是Color.RED實例的地方,而后,變量c被重新賦值,此時變量c是指向了堆區中的Color.BLUE實例的位置。 這個賦值跟main方法中color變量是沒有一點關系的,main中的color變量還是指向的Color.RED實例的地方。 所以covert方法執行完后,main方法中的color變量是沒有變的。

如果想要它變化,我感覺有兩種方法,一種是covert方法返回一個想要的枚舉變量,在main中賦值給color,另一種方法是把這個變量再用一個類封裝一下,傳入到covert方法中。希望對你有幫助。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371706.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371706.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371706.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

loadView的使用總結

一、loadView 1. loadView什么時候被調用? 每次訪問UIViewController的view(如 controller.view、self.view)并且view為nil,loadView方法就會被調用 2. 有什么作用 loadView 方法是用來負責創建UIViewController的view 3. 默認實…

數據庫備份 java jar_Java實現數據庫備份并利用ant導入SQL腳本

?數據備份對于經常在運維部署方面的工作者來說,是一件相對簡單的事情,都可以通過某一個SQL工具進行備份,但是如果在項目運行當中,我們需要對數據進行實時,或者是每隔一星期,一個月,等等進行數據…

JSF簡單Ajax示例

今天,我們將看到一些使用JSF的Ajax簡單樣本。 如果要查看有關JSF / Web應用程序的其他文章,請單擊以下鏈接: 重定向后的JSF持久化對象和消息 , 使用JAAS和JSF進行用戶登錄驗證 , JSF:Converter and Bean Au…

常用的好用的window工具

1. FastStone Capture截圖錄屏軟件 百度軟件中心:http://rj.baidu.com/soft/detail/13504.html?ald 注冊企業版: 用戶名:c1ikm 注冊碼:AXMQX-RMMMJ-DBHHF-WIHTV 中文輸入亂碼解決方法: 2. Notepad文本編輯器&#xff…

表分區

http://www.cnblogs.com/leestar54/p/6225821.html轉載于:https://www.cnblogs.com/jouny/p/6262850.html

java飛鴿傳書_feige 飛鴿傳書源代碼java 實現不錯的聯系網絡編程的資料飛鴿傳書的GUI(java實現) - 下載 - 搜珍網...

我的飛鴿傳書/FileFilter.java我的飛鴿傳書/FileNameExtensionFilter.java我的飛鴿傳書/飛鴿傳書/classes/feige/About.class我的飛鴿傳書/飛鴿傳書/classes/feige/ConnectOthers$ReadMessageThread.class我的飛鴿傳書/飛鴿傳書/classes/feige/ConnectOthers.class我的飛鴿傳書…

JAXB和根元素

XmlRootElement是人們習慣于與JAXB(JSR-222)一起使用的注釋。 目的是將根元素與類唯一關聯。 由于JAXB類映射到復雜類型,因此一個類有可能對應于多個根元素。 在這種情況下,無法使用XmlRootElement ,人們開始感到有些困…

python socket模塊實現udp通信_Python基于socket模塊實現UDP通信功能示例

Python基于socket模塊實現UDP通信功能示例本文實例講述了Python基于socket模塊實現UDP通信功能。分享給大家供大家參考,具體如下:一 代碼1、接收端import socket#使用IPV4協議,使用UDP協議傳輸數據ssocket.socket(socket.AF_INET, socket.SOC…

Hibernate緩存基礎知識

最近,我嘗試了休眠緩存。 在這篇文章中,我想分享我的經驗,并指出Hibernate Second Level Cache的一些細節。 在此過程中,我將指導您閱讀一些有助于實現緩存的文章。 讓我們從地面開始。 在休眠狀態下緩存 緩存功能旨在減少必要的…

TP3.2之WHERE組合條件處理

1、條件都是int類型: $User->where(type1 AND status1)->select(); 2、條件包含字符串類型: 使用3.1以上版本的話,使用字符串條件的時候,建議配合預處理機制,確保更加安全, $Model->where("i…

linux-ssh遠程后臺執行腳本-放置后臺執行問題(轉)

寫了一個監控負載的小腳本(死循環,測試結束后再kill對應進程),因需要監控多臺服務器,所以在一臺服務器上使用ssh統一執行腳本遇到問題:使用ssh root172.16.146.20 /usr/local/luly/loadavg.sh 2 2 &執行…

python2.7輸入函數_Python2.7的用戶輸入函數有問題,無法讓這些輸入與程序一起工作...

我對python世界還是個新手,雖然我已經用php做了很多工作。。。這是我的案子。。。在我正在用python2.7為我的小程序編寫一些代碼。在在那個程序中,我需要2個用戶輸入,它們都是數字。在第一個數字不得大于11,也不得小于0。在第二個…

創建Java動態代理

Java動態代理機制提供了一種有趣的方式來創建代理實例。 不過&#xff0c;創建動態代理的步驟有些繁瑣&#xff0c;請考慮將代理用于審核服務實例的方法調用所花費的時間– public interface InventoryService {public Inventory create(Inventory inventory);public List<I…

html5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區分 HTML 和 HTML5?...

新特性&#xff1a; 1. 拖拽釋放(Drag and drop) API 2. 語義化更好的內容標簽&#xff08;header,nav,footer,aside,article,section&#xff09; 3. 音頻、視頻API(audio,video) 4. 畫布(Canvas) API 5. 地理(Geolocation) API 6. 本地離線存儲 localStorage 長期存儲數據&am…

Substring with Concatenation of All Words 題解

題意 You are given a string, s, and a list of words, words, that are all of the same length. Find all starting indices of substring(s) in s that is a concatenation of each word in words exactly once and without any intervening characters. For example, give…

java udp丟包_linux 系統 UDP 丟包問題分析思路

最近工作中遇到某個服務器應用程序 UDP 丟包&#xff0c;在排查過程中查閱了很多資料&#xff0c;總結出來這篇文章&#xff0c;供更多人參考。在開始之前&#xff0c;我們先用一張圖解釋 linux 系統接收網絡報文的過程。● 首先網絡報文通過物理網線發送到網卡● 網絡驅動程…

【SQL】分組數據,過濾分組-group by , having

學習筆記&#xff0c;原文來自http://blog.csdn.net/robinjwong/article/details/24845125 創建分組 - GROUP BY 分組是在SELECT語句的GROUP BY子句中建立的。它的作用是通過一定的規則將一個數據集劃分成若干個小的區域&#xff0c;然后針對若干個小區域進行數據處理。SELECT子…

使用EasyMock或Mockito

我大部分時間都在使用EasyMock &#xff0c;但是最近我和一些非常愿意使用Mockito的人一起工作。 我不打算在同一項目中使用兩個框架來實現相同的目的&#xff0c;因此我采用了Mockito 。 因此&#xff0c;在過去的幾個月中&#xff0c;我一直在使用Mockito &#xff0c;這是我…

CentOS下iptables 配置詳解

如果你的IPTABLES基礎知識還不了解,建議先去看看. 開始配置 我們來配置一個filter表的防火墻. (1)查看本機關于IPTABLES的設置情況 [roottp ~]# iptables -L -nChain INPUT (policy ACCEPT)target prot opt source destination Chain FORWARD (policy…