有没有人见过java创建对象的奇怪语法

willim0201 2008-02-28 08:57:30

public class TTT{
public void static main(String[] args){
//奇怪的创建对象的方法,直接就把对象中的属性值都赋好了
Test test = new Test(){
{
setTime(1000);
setDate(20080228);
};//这个分号是可加可不加的
};//结尾是一分号,这个分号不加会报错。我把它理解为一句语句的结束
}

}

class Test{
private int time;
private String date;

public setTime(int time){
this.time = time;
}

public setDate(String date){
this.date = date;
}
}

想请问大家有没有看到过这个创建对象的写法,
最好能分析一下,这个语法的关键点,以及它与常用创建的方法的优缺点。
这个在google中不知道怎么去搜索,哈哈
请不吝赐教,谢谢。
...全文
166 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
犇犇犇程序猿 2008-02-29
  • 打赏
  • 举报
回复
我经常这样创建线程
Thread aThread = new Thread(){
public void run(){
//dosomething
}
};
无尽涟漪 2008-02-29
  • 打赏
  • 举报
回复
我也觉得是匿名内部类,
只不过 没这样用过
匿名内部类只是在 开发 swing 的时候用过
zapdos 2008-02-28
  • 打赏
  • 举报
回复
其实它就是创建一个继承Test的匿名内部类罢了
zapdos 2008-02-28
  • 打赏
  • 举报
回复
thinking in java 3RD里面有说过的
ninesea 2008-02-28
  • 打赏
  • 举报
回复
对阿 看上去就是匿名类啊 看到1楼的回答都不敢确定了
superjoo 2008-02-28
  • 打赏
  • 举报
回复
应该是匿名内部类吧
muhudai 2008-02-28
  • 打赏
  • 举报
回复
那个;确实可加可不加
muhudai 2008-02-28
  • 打赏
  • 举报
回复
public class test{
public static void main(String[] args){
//奇怪的创建对象的方法,直接就把对象中的属性值都赋好了
Test1 test1 = new Test1(){
{
setTime(1000);
setDate("20080228");
};//这个分号是可加可不加的
};//结尾是一分号,这个分号不加会报错。我把它理解为一句语句的结束
}

}

class Test1{
private int time;
private String date;

public void setTime(int time){
this.time = time;
}

public void setDate(String date){
this.date = date;
}
}
buzhihuigai 2008-02-28
  • 打赏
  • 举报
回复
匿名类 ?
willim0201 2008-02-28
  • 打赏
  • 举报
回复
C++以前学的好久不用都有点忘记了。
不过,java学习的时候没有看到过这种写法。
healer_kx 2008-02-28
  • 打赏
  • 举报
回复
C++都是这个样子的哦,哪里奇怪啊?

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧