Redian新闻
>
NIW 如何界定 excellence level
avatar
NIW 如何界定 excellence level# EB23 - 劳工卡
s*e
1
我前几天面试,被问到Java 匿名内部类:
1. 什么情况下用到匿名内部类?(我的理解是他想问为什么需要使用匿名内部类)
2. 如何找到匿名内部类的对象,他说,因为是匿名的,那么在匿名内部类产生对象后
, 我如何找到这个匿名的内部类对象?
第2个问题,我尤其不太明白答案。
请教大家这两个问题,欢迎讨论!
avatar
a*1
2
申请NIW, 其中一封推荐信在描述专业excellence level时用的是10-15%。
“I rate him in the top 10-15% of the XXX that I have worked with”
请问这种表述会影响审批吗?其他条件比如publication 以及引用都还可以。
谢谢!
avatar
z*e
3
java的基本概念,虽然用得不多
大部分java教材都会保函有ui部分,这个在ui上大量出现
可能因为最近java8出来了之后,加了default关键字
以及lambda,所以这个东西又被拿出来说
以前1.4时代常见的面试题
java是完全的oo语言,所以不存在有类外部的定义
所有方法和变量都必需写在类里面,包括static变量和方法
那有些时候你需要一些临时的用完一次就不再用的类
把它单独写成一个class就显得麻烦
所以直接用匿名类包装一下,扔给一个object就好了
匿名的是类不是匿名对象,当然可以找到那个对象
如果非要纠结,那就是通过找匿名类的父类来定位
java对象声明不是需要先把对象类给写在前面么?
匿名类的变量声明前面放的是它父类的名字
一般父类是一个接口或者抽象类
avatar
s*e
4
谢谢回复!
关于第一个问题,我也是回到说是在Swing UI开发中常用到匿名内部类,我感觉我的回
到不是他期望的,他承认我说的对,但是问我还有没有其他的例子,我就想不起来了。
第二个问题,我也是说了如果引用内部类,就是" 外部类.内部类'' 的方式,但是
他反复说,既然是匿名,那又如何知道内部类的名字呢? 没有名字,怎么能用这种方
式去找到呢?

【在 z****e 的大作中提到】
: java的基本概念,虽然用得不多
: 大部分java教材都会保函有ui部分,这个在ui上大量出现
: 可能因为最近java8出来了之后,加了default关键字
: 以及lambda,所以这个东西又被拿出来说
: 以前1.4时代常见的面试题
: java是完全的oo语言,所以不存在有类外部的定义
: 所有方法和变量都必需写在类里面,包括static变量和方法
: 那有些时候你需要一些临时的用完一次就不再用的类
: 把它单独写成一个class就显得麻烦
: 所以直接用匿名类包装一下,扔给一个object就好了

avatar
s*e
5
谢谢回复!
关于第一个问题,我也是回到说是在Swing UI开发中常用到匿名内部类,我感觉我的回
到不是他期望的,他承认我说的对,但是问我还有没有其他的例子,我就想不起来了。
第二个问题,我也是说了如果引用内部类,就是" 外部类.内部类'' 的方式,但是
他反复说,既然是匿名,那又如何知道内部类的名字呢? 没有名字,怎么能用这种方
式去找到呢?

【在 z****e 的大作中提到】
: java的基本概念,虽然用得不多
: 大部分java教材都会保函有ui部分,这个在ui上大量出现
: 可能因为最近java8出来了之后,加了default关键字
: 以及lambda,所以这个东西又被拿出来说
: 以前1.4时代常见的面试题
: java是完全的oo语言,所以不存在有类外部的定义
: 所有方法和变量都必需写在类里面,包括static变量和方法
: 那有些时候你需要一些临时的用完一次就不再用的类
: 把它单独写成一个class就显得麻烦
: 所以直接用匿名类包装一下,扔给一个object就好了

avatar
z*e
6
第一个有些难了,标准答案可能是要用lambda时候用匿名类
第二个不需要知道内部类名字,只需要知道接口或者抽象类的名字
每次使用,都需要把类的implementation/实现紧跟在定义后面
进阶就说java8里面这个可以用lambda表达式,也就是->

【在 s********e 的大作中提到】
: 谢谢回复!
: 关于第一个问题,我也是回到说是在Swing UI开发中常用到匿名内部类,我感觉我的回
: 到不是他期望的,他承认我说的对,但是问我还有没有其他的例子,我就想不起来了。
: 第二个问题,我也是说了如果引用内部类,就是" 外部类.内部类'' 的方式,但是
: 他反复说,既然是匿名,那又如何知道内部类的名字呢? 没有名字,怎么能用这种方
: 式去找到呢?

avatar
s*e
7
谢谢,Java的 Lambda表达式,我需要去看一下。
关于第二个,我还是有点不太明白,比如:
Class OuterClass (){
public void abc(){
new InnerInterface(){
public inntermethod(){
.....
}
}
}
}
这个InnerInterface接口就产生了一个匿名内部类对象,这个匿名内部类对象该如何找
到?

【在 z****e 的大作中提到】
: 第一个有些难了,标准答案可能是要用lambda时候用匿名类
: 第二个不需要知道内部类名字,只需要知道接口或者抽象类的名字
: 每次使用,都需要把类的implementation/实现紧跟在定义后面
: 进阶就说java8里面这个可以用lambda表达式,也就是->

avatar
z*e
8
InnerInterface innerInterface = new InnerInterface(){
@Override
public void innterMethod(){...}
};
...
innerInterface.innerMethod();
...
avatar
Y*y
9
lambda和anonymous class都会compile成一个outerclass$XXX形式的样子,那个XXX一
般是很奇怪的名字。

【在 s********e 的大作中提到】
: 谢谢,Java的 Lambda表达式,我需要去看一下。
: 关于第二个,我还是有点不太明白,比如:
: Class OuterClass (){
: public void abc(){
: new InnerInterface(){
: public inntermethod(){
: .....
: }
: }
: }

avatar
s*e
10
谢谢! 看来我要好好研究一下Lambda!

【在 Y*****y 的大作中提到】
: lambda和anonymous class都会compile成一个outerclass$XXX形式的样子,那个XXX一
: 般是很奇怪的名字。

avatar
g*g
11
匿名内部类是因为没有 lamda,而之所以这样就是因为其他地方不需要引用,这样写简
洁。外部既然不能访问问外部怎么访问就是个错误命题了。
avatar
c*n
12
匿名内部类好处是相关code在一起,一个简单的interface implemetation,
别的地方又不重复利用。 常用在callback/strategy之类的class里。
还有一个好出是可以access outer class的变量, 没必要些那些boilerplate

【在 s********e 的大作中提到】
: 我前几天面试,被问到Java 匿名内部类:
: 1. 什么情况下用到匿名内部类?(我的理解是他想问为什么需要使用匿名内部类)
: 2. 如何找到匿名内部类的对象,他说,因为是匿名的,那么在匿名内部类产生对象后
: , 我如何找到这个匿名的内部类对象?
: 第2个问题,我尤其不太明白答案。
: 请教大家这两个问题,欢迎讨论!

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。