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没有设置正确