永发信息网

java 静态内部匿名类中为什么可以应用this关键字,且引用的this指代什么?

答案:2  悬赏:0  手机版
解决时间 2021-01-29 08:48
public class ThreadLocalGCDemo {
static volatile ThreadLocal<SimpleDateFormat> tl=new ThreadLocal<SimpleDateFormat>(){
protected void finalize() throws Throwable{
System.out.println(this.toString()+" is gc1");
}
};

static volatile CountDownLatch latch=new CountDownLatch(10000);
public static class ParseDate implements Runnable{

int i=0;

public ParseDate(int i){
this.i=i;
}

@Override
public void run() {
// TODO Auto-generated method stub
try {
if(tl.get()==null){
tl.set(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"){

@Override
protected void finalize() throws Throwable {
// TODO Auto-generated method stub
System.out.println(this.toString()+" is gc2");
}

});
System.out.println(Thread.currentThread().getId()+":create SimpleDateFormat");
}
Date d=tl.get().parse("2015-03-29 19:29:"+i%60);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
latch.countDown();
}
}

}
}
这是一个类的代码 代码中两个this分别指代什么?为什么静态的内部匿名类里可以有this?
最佳答案
package TestUi;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.CountDownLatch;

public class ThreadLocalGCDemo {
static volatile ThreadLocal<SimpleDateFormat> tl=new ThreadLocal<SimpleDateFormat>(){
protected void finalize() throws Throwable{
System.out.println(this.toString()+" is gc1");//这里指的就是这个类自身(static 关键字原理) 也可以写成 ThreadLocalGCDemo.toString()
}
};

static volatile CountDownLatch latch=new CountDownLatch(10000);
public static class ParseDate implements Runnable{

int i=0;

public ParseDate(int i){
this.i=i; //这里和上面的那个方法指代的有所不同,是实例化之后的这个类 ,ThreadLocalGCDemo cc = new ThreadLocalGCDemo 这个this 指的就是 cc 了 , 
}

@Override
public void run() {
// TODO Auto-generated method stub
try {
if(tl.get()==null){
tl.set(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"){

@Override
protected void finalize() throws Throwable {
// TODO Auto-generated method stub
System.out.println(this.toString()+" is gc2");
}

});
System.out.println(Thread.currentThread().getId()+":create SimpleDateFormat");
}
Date d=tl.get().parse("2015-03-29 19:29:"+i%60);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
latch.countDown();
}
}

}
}
全部回答
1、当在匿名类中用this时,这个this则指的是匿名类或内部类本身。 2、this.i=i 是指 当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量。(this是当前对象自己)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
狼子野心揭示了什么
鑫福便捷酒店停车场怎么去啊,我要去那办事
my father often visits my grandma by car改
从民事法律行为来说,某商业银行授权其业务经
诗礼的意思是什么啊?知道的请说下!
男人们进来看看!男人提分手时为何会对女人说
理想茶院(诸葛西路)地址在什么地方,我要处理
是不是青少年不适合打麻将,为什么
狗狗吃什么食物比较好
医生给开了什么红核妇洁洗液洗了几天可还是痒
乌鲁木齐八钢有销售汽车的地方吗,最好是卖东
曲辫子的意思是什么啊?知道的请说下!
停车场(恭城农机局南)地址在什么地方,想过去
昌和茶行地址在什么地方,想过去办事
为什么SO2通入氨水中会产生(SO3)2- ;通入
推荐资讯
烘焙蛋糕盘可以用在微波炉里面吗
用C语言代码写出 11 22 33 44 55 66 77 88 99
mej是什么牌子
揽抱的意思是什么啊?知道的请说下!
显卡用GT625玩CF会不会卡,FPS大概为多少?
上海2016年8月20号―25号天气
电脑第一次买来跑分13万多,现在怎么跑到了8
甘美的意思是什么啊?知道的请说下!
私家车可以注册滴滴出租车司机吗
杭州下沙的专科学校哪个好些
对已过世的人想念用什么词语
求一首英文歌的歌名,歌词里有I'm a kin
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?