来看数组协变带来的静态范例毛病
市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。在方才一个通不外Java字节码校验的例子里,我们看到JVM会对其所加载的.class文件做校验,以包管范例平安。但Java里有这么一种情形,是编译器和JVM的字节码校验都没法检测到,而要到实践运转的时候才干发明的毛病——数组的协变招致的范例静态体系毛病。
仍是像前一帖一样,用ASM来天生字节码:
Java代码
importjava.io.FileOutputStream;
importorg.objectweb.asm.ClassWriter;
importorg.objectweb.asm.MethodVisitor;
importorg.objectweb.asm.Opcodes;
publicclassTestASMimplementsOpcodes{
publicstaticvoidmain(String[]args)throwsException{
ClassWritercw=newClassWriter(0);
cw.visit(
V1_5,//classformatversion
ACC_PUBLIC,//classmodifiers
"TestVerification",//classnamefullyqualifiedname
null,//genericsignature
"java/lang/Object",//superclassfullyqualifiedname
newString[]{}//implementedinterfaces
);
MethodVisitormv=cw.visitMethod(
ACC_PUBLIC+ACC_STATIC,//accessmodifiers
"main",//methodname
"([Ljava/lang/String;)V",//methoddescription
null,//genericsignature
null//exceptions
);
mv.visitCode();
mv.visitInsn(ICONST_1);
mv.visitTypeInsn(ANEWARRAY,"java/lang/Float");
mv.visitTypeInsn(CHECKCAST,"[Ljava/lang/Object;");
mv.visitVarInsn(ASTORE,0);
mv.visitVarInsn(ALOAD,0);
mv.visitInsn(ICONST_0);
mv.visitLdcInsn("astring");
mv.visitInsn(AASTORE);
mv.visitVarInsn(ALOAD,0);
mv.visitInsn(ICONST_0);
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKEVIRTUAL,"java/lang/Object","toString","()V");
mv.visitInsn(RETURN);
mv.visitMaxs(3,1);
mv.visitEnd();//endmethod
cw.visitEnd();//endclass
byte[]clz=cw.toByteArray();
FileOutputStreamout=newFileOutputStream("TestVerification.class");
out.write(clz);
out.close();
}
}<p>
最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
页:
[1]