java惡心
A. java高手請進
public <E> E get(Class<E> clazz, Long id) {
return (E) getSession().get(clazz, id);
}
指在方法get中定義一個泛型參數E。一般情況下,泛型大多在類定義時定義,但有時候也會在方法前臨時定義~~
用途就是:
1) 圖個方便唄。比如說上面這個方法,你總不會在get所屬的類被使用的時候還要沒事兒找事兒的先聲明一下泛型參數吧~~如果你有N個方法要用到類型參數,而每個方法要用到的都可能不一樣,那麼,你想在new類的時候定義N個泛型參數么?
2) 咦……有那麼些個情況下,你在類中定義泛型參數是解決不了問題的。比如說你這個get方法吧,呃,你發現 get(Class<E> clazz, Long id) 中的Class<E>了么?嗯,簡單的說Class<E>標志著每一次調用get的時候獲得的參數可能都不一樣,那麼如果你要用類定義泛型的方式,你能怎麼做?每次調用對應於某某類型的get方法的時候new一個對應於該類型的類出來?這不惡心了么~~
3) 你的泛型E只是在該方法內使用,所以直接在方法前定義在設計上也比較合理。
最後,在方法前定義類型呢,需要注意的是方法的參數要帶有該泛型參數呢。為啥呢?因為如果你不給參數它,那編譯器怎麼知道t是個啥呢~~
舉例說明,比如說你定義這么一個類
class a{
<t> t f(t arg){return arg;}
}
那麼別人用你這個類的時候,用反射會得到 f()相應於該參數arg的返回值 的有關信息。呃,這么說可能比較抽象了,那俺們美化下描述方式吧。用過IDE吧?用過Eclipse或者netbeans吧?沒用過那蹲牆角畫圈圈去。在netbeans或Eclipse下,你定義上面這個例子的代碼,然後再搞個main入口點出來,在main裡面輸入new a().f(1).,注意哦,a(1)後面帶一個點 . 的!打完點之後等著IDE彈出代碼提示吧。看著代碼提示,你發現啥了沒?
嗯,你會發現你從方法f(1)獲得了一個Integer對象。為啥是Integer對象呢?因為你給了函數f()一個數字1(我們知道泛型只支持對象,也就是說不能使基礎數據類型int、float等玩意兒,所以這里編譯器先把 1轉化為Integer,哦,這操作叫啥自動裝箱來著了,惡心的名詞兒~~),既然你給了f()一個Integer了,那麼f()返回一個Integer不是很合理么?IDE的代碼提示就是通過 t f(t arg)這里的兩個聯系在一起的t獲取的(如何獲得?答曰:反射)。
然後,咦,回到我們剛剛的話題,俺不是說了要舉例說明「方法的參數要帶有該類型」么?嗯,從<t> t f(t arg){return arg;}這里我們把參數的類型t刪掉,變成<t> t f(Object arg){return arg;}嘿嘿,你說編譯器啥的怎麼知道返回的t是啥類型呢?囧呢。。
PS:哎~~怎麼一下就打了這么多字了,個悲劇的。。
B. 今天做到一個很惡心的java題,求高手解答~~謝謝了,大神幫忙啊
import java.util.Scanner; public class aaa6 { public static void main(String[] args){ Scanner ss = new Scanner(System.in); System.out.println("來個數"); int i = ss.nextInt(); int[] aa = {8,4,2,1,23,344,12}; for(int j=0;j<7; j++){ if(i == aa[j]){ System.out.println("Oh,year!!!"); } else { System.out.println("wrong"); break; } } } }
C. java和c#的運行庫除了惡心人,還有什麼意義
庫提供了相關的封裝好的方法和編譯java的機制那些東西,計算機智能識別二進制的機器碼,所以必須要工具將我們編寫的高級語言轉換成二進制碼讓計算機識別,除非你可以編寫01010110......這種的機器碼,否則為了能將程序編譯,必須要進行編譯等操作,尤其是java這種跨平台的編程語言,所以必須要用運行庫
D. S60第5版的QQ是不是都是JAVA的,據說很「惡心」
S60第五版的系統在過內已經很先進了,有些jar格式的QQ也不錯啊像QQ2009正式版,相信過不了多久sis格式的好QQ就快有了,當初S40手機不也是先慢慢適應後,才出現的jar的嗎!打字很累,願您點贊!
E. 我說spring簡直就是忽悠人的
首先,我要否定樓主片面的判斷。。。雖然我也惡心java,也惡心spring。
依賴注入什麼的確實惡心,不是方式惡心,而是名詞惡心,其實這和翻譯者有關,我認為不是所有的東西都有必要翻譯成中文,因為好多翻譯完了更不明白了,還沒完沒了的記憶那麼多詞彙,還得強行腦補。。。
我惡心java不是有兩個原因,1是太墨跡了,比較臃腫,不簡潔,不過也許看習慣就好了吧。2是當年的java,一彈出java那個窗口我就腦袋疼,512內存的機器基本跑個java程序就不用干什麼了。不過這已經是過去式。
java沒有走下坡路,無論是C還是java都是編程的常青樹。可以上各大權威網站查詢。
spring不是忽悠人的,java也好spring也好,確實都有繁瑣的地方,如果你不是很熟悉他們,還要用他們做一個中小型項目(好多項目連測試都沒有,什麼TDD都是浮雲。。。),這的確是頭疼的,無用功太多了。這也是為什麼python和php還有市場的原因。但如果你是做一個中大型以上項目的話,那就完全不一樣了。舉個例子,比如你只製造1輛車,手工打造是最好的,不要什麼MQB平台;反之造100W輛車,平台是必須的。
最後,現在我也在轉型學java+spring,工作環境變化導致的。。。學起來確實有點煩,但是會過去的,別人都能學會,我也一定能。勸樓主一句,學無止境,煩躁和抵觸是正常的,熬過去就好了
F. java這么爛為什麼還有那麼多人用
是挺挺爛,資料點用大,基本小型機開發會採用C++或Python性能高,Java性能是真不敢恭維,1.7、1.8都多少年了,那代碼優美度寫的要和C#放一起就是乞丐,語言強大和python比就是垃圾,真的Java走到死路了,10年前大家可能沒注意到,但Android出來後Java問題越來越嚴重,問題全暴露,java虛擬機穩定性、資源佔用,真是多大的馬也拉不動Java,就如魔獸爭霸別說你機器配置多高,6v6、10v10卡死你
G. java真的很惡心嗎
java暫時在編程語言中排第一,惡心沒有看個人。畢竟有些人喜歡面向對象,有些喜歡面向過程。各有所長並無惡心之說。
H. 一個惡心的問題,Java中截取指定物理長度的字元串
是挺惡心的,要不你參考一下這個
http://www.shangxueba.com/jingyan/2386299.html
I. 學java ee就一定要學javascript嗎javascript真的是太惡心了
最好學吧,javaee主要是做web開發,沒javascript基礎的話沒法做,而且現在前台技術是越來越流行了。富客服端,像extjs,jquery。。。這些都是在js的基礎上寫的,所以做javaee還是學js好啊。為什麼javascript惡心呢??沒覺得啊
J. 初學JAVA 運行個程序惡心死我了 設置了PATH 和CLASSPATH(這兩個設置都弄安裝的路徑嗎) 後還設置什麼嗎
先新建一個JAVA_HOME;JAVA_HOME是設置到安裝路徑的根目錄里(即到bin的上層目錄就行)如:JAVA_HOME=C:\Program Files\Java\jdk1.6.0_23
PATH是設置根目錄下的bin目錄就行。如:%JAVA_HOME%\bin
path變數的含義就是系統在任何路徑下都可以識別java命令
CLASSPATH是設置為了程序能找到相應的".class"文件
設置的應該是2個jar包;如:;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\toos.jar
你那個問題可能是由於CLASSPATH沒有設置正確