首页   注册   登录
 amiwrong123 最近的时间轴更新
ONLINE

amiwrong123

V2EX 第 417414 号会员,加入于 2019-06-01 12:17:41 +08:00
今日活跃度排名 2533
这个味道,是BUG的味道!
amiwrong123 最近回复了
不好意思,我看错了。我觉得好像没法访问吧。。应该外部类方法的 n 只是一个局部变量。而内部类只是说可以直接调用到外部类对象的成员,一个局部变量也不是个外部类的成员啊
提问前记得百度,网上博客一大堆
7 天前
回复了 amiwrong123 创建的主题 Java [不懂就问] Java .lang.Enum 源码的两个疑问
@xuanyu66
这本书挺好的,之前和它比还纠结 java 核心技术先看哪本,还是选了它。其实更重要的是,选了一本就好好看==
7 天前
回复了 amiwrong123 创建的主题 Java [不懂就问] Java .lang.Enum 源码的两个疑问
@xuanyu66
是呀,正在学呢。主要是看 java 编程思想这本书,不过看得仔细就读得慢了。关注你一波,以后好再 @你,哈哈哈。
7 天前
回复了 amiwrong123 创建的主题 Java [不懂就问] Java .lang.Enum 源码的两个疑问
@xuanyu66 #20
你这个例子我懂啦,其实你只是想强调 内部类有没有外部类对象的引用,这个意思嘛。
而 MyEnum$1 是没有持有的。

@xuanyu66 #21
这个我说一下吧,匿名内部类要分情况的:
你 20 楼的说这个例子,就是 new Thread(){},因为它处于 non-static cnotext 这样的上下文里( countDown 是个成员方法嘛,所以就是非静态的上下文),所以这时匿名内部类持有了外部类的引用。

然后你最开始给我说的例子:
public enum MyEnum {
```
A {
void doSomething() { }
},


B {
void doSomethingElse() { }
};
```
其实我认为它在实现上相当于:
```
public static final MyEnum A = new MyEnum{
void doSomething() { }
}
```
但偏偏这个匿名内部类赋值给了一个静态变量,那么它便是 static cnotext 的了。所以此时,匿名内部类不能持有外部类的引用。
7 天前
回复了 amiwrong123 创建的主题 Java [不懂就问] Java .lang.Enum 源码的两个疑问
@xuanyu66
就是我以为 MyEnum$1 是作为 MyEnum 的匿名内部类存在的(因为它的名字长得就像)

你却说 MyEnum$1 是作为 MyEnum 的静态内部类存在的
7 天前
回复了 amiwrong123 创建的主题 Java [不懂就问] Java .lang.Enum 源码的两个疑问
@xuanyu66
懂啦,给新类新加了个静态方法,里面再去调用了父类的静态方法。
7 天前
回复了 amiwrong123 创建的主题 Java [不懂就问] Java .lang.Enum 源码的两个疑问
@xuanyu66
谢谢回答啦,那我理解成匿名内部类(还是静态内部类)是不是理解错了=-=

虽说,static context 下的匿名内部类和静态内部类是一样的。
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2212 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 9ms · UTC 11:47 · PVG 19:47 · LAX 04:47 · JFK 07:47
♥ Do have faith in what you're doing.