栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

不是无效Groovy代码的有效Java代码吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

不是无效Groovy代码的有效Java代码吗?

这是有效的Java 6但无效的Groovy
1.6的项目列表。这不是一个完整的列表,但我认为它涵盖了大多数情况。其中一些是稍后提到的Groovy版本所允许的。

(顺便说一句,我认为您应该注意,非静态初始化块确实可以在Groovy中工作。)

Groovy 1.6中的任何内部类声明( 1.7添加了内部类):

包括静态

public class Outer{  static class Inner{}}

非静态的

public class Outer{  class Inner{}}

本地班级

public class Outer{  public static void main(String[] args) {    class Local{}    }}

和匿名类

java.util.EventListener listener=new java.util.EventListener(){};

使用Groovy关键字作为变量在任何Groovy版本中均无效:

int def;int in;int threadsafe;int as;

Java数组初始化

String[] stuff=new String[]{"string"};int[] array={1,2,3};

通过更改

{...}
为使用Groovy数组文字格式
[...]

在后面不是有效表达式的字符串中使用美元符号

String s="$$";String s="$def";String s="$enum";String s="$;";String s="$\";//etc.

for循环中有多个初始化程序

for (int i=0, j=0; i < 5; i++) {}

for循环中有多个增量

int j=0;for (int i=0; i < 5; i++,j++) {}

使用换行符分解一些表达式

int a= 2 / 2 ;

提示:在Groovy中使用反斜线继续

int a= 2 / 2 ;

无外壳的末端开关

switch(a){  case 1:}

交换机无默认设置

在两种情况下都适用,默认值在末尾

int a=0;switch(a){    default:}

或中间的某个地方

switch(a){    default:    case 1:        break;}

带有列表的注释

@SuppressWarnings({"boxing","cast"})

提示:改为使用Groovy列表文字语法:

@SuppressWarnings(["boxing","cast"])

本机方法声明

public native int nativeMethod();

1.6中的每个枚举类(在Groovy更高版本中有效)

public enum JavaEnum{  ADD{    public String getSymbol(){ return "+"; }  };  abstract String getSymbol();}

做循环

do{  System.out.println("stuff");}while(true);

平等

尽管从技术上讲

==
Groovy和Java是有效的,但在语义上有所不同。这是您不能不进行更改而仅仅依赖于将Java编译为Groovy的原因之一。更糟糕的是,有时由于Java字符串嵌入,它似乎可以工作。

该示例太长了,无法添加到现有答案中,但是重点是, 与Groovy 语法上 有效的 Java代码 在运行时的行为可能有所不同
__

要在Groovy中

x == y
获得两个非空对象的结果与Java相同
x.is(y)
x == y
是有效的Groovy,只是 做了一些不同的事情

Groovy文档提供了更详细,更广泛的差异列表。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/496001.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号