JVM:无法使用普通Java构建的字节码构造示例?

时间:2014-03-05 18:44:50

标签: java jvm

我试图将JVM字节码和Java作为编程语言进行比较。

您能想到任何无法用Java重写的Bytecode类示例,即使使用大量(Java-)Boilerplate代码也是如此吗?也许像Scala这样的其他JVM语言使用的任何构造?

[编辑] 我不是在谈论指令的比较或创建某种算法的可能性。让我重新解释一下这个问题:“是否有任何'模式'可以使用另一种JVM语言,但Java不会?”。 [/编辑]

[EDIT2] 如果我解释一下这个问题到底是什么,也许会更容易。我正在使用源代码转换系统,并问自己是否存在任何可能有用的模式或构造但只是通过转换普通Java代码但不需要修改字节码本身而无法添加到Java类的问题。 [/ EDIT2]

2 个答案:

答案 0 :(得分:4)

  • 在Java中,您不能有两个具有相同名称且只与返回类型不同的方法 - Java Bytecode允许这样做
  • 字节码允许在不调用构造函数的情况下创建类的实例
  • 字节码允许直接使用GOTO,这在普通Java中是不允许的

更新:已回答Simillar问题here

答案 1 :(得分:0)

另外我想补充一点,你不能在运行时使用类型信息。因此,如果您希望将在运行时保留通用信息的C#转换为JVM字节码,则不能以1:1的方式执行此操作。 Type erasure: Java vs C#