鱼C论坛

 找回密码
 立即注册
查看: 6767|回复: 7

一个java内部类的问题,求鱼油解答

[复制链接]
发表于 2013-8-25 12:39:02 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 百日维新 于 2014-8-17 16:57 编辑
 public class Test 
{
 public Test( T t)
 {
 }
 
 public Test()
 {
  this(new T());//这里
 }
 
 public void a(T t)
 { 
 }
 
 public void b()
 {
  a(new T());
 }
 
 private class T
 {
 }
}
为什么那一行eclipse会报错(这只是一个测试程序,所以没写main)

最佳答案

查看完整内容

不好意思啊! 我刚刚没有仔细看,对于这个问题,是这样的。 Java内部类、直接类、构造有初始化机制,有初始化顺序。内部类其实比较特殊,我没有仔细去深究,说来也惭愧。 但是 这个地方 如果是一个外部类的话,就没用问题的了。 其实对于这个用法也没必要去深究,真正做开发的时候,像这种内部类用的满少,主要是匿名内部类用的稍微多一点。因为这样一个内部类主要是对外屏蔽。而且像这种“奇怪”的构造写法,说真的满少的。 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-25 12:39:03 | 显示全部楼层

不好意思啊!
我刚刚没有仔细看,对于这个问题,是这样的。
Java内部类、直接类、构造有初始化机制,有初始化顺序。内部类其实比较特殊,我没有仔细去深究,说来也惭愧。
但是 这个地方 如果是一个外部类的话,就没用问题的了。
其实对于这个用法也没必要去深究,真正做开发的时候,像这种内部类用的满少,主要是匿名内部类用的稍微多一点。因为这样一个内部类主要是对外屏蔽。而且像这种“奇怪”的构造写法,说真的满少的。不过,你这种学习的精神确实是可取的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-25 12:43:02 | 显示全部楼层
大哥 你不觉得你发错地方了吗??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-25 12:56:31 | 显示全部楼层
因为构造函数是静态!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-25 13:07:02 | 显示全部楼层
本帖最后由 小布丁 于 2013-8-25 13:15 编辑

楼上说错了吧,构造函数是和具体对象直接关联的,静态的是全局的,只和类关联,和具体对象没有任何关联,构造函数怎么可能是静态的,除非有静态代码块,这段代码也没有静态代码块。
报错的那一行 改为this.new T()  或者直接不要this也行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-25 13:14:49 | 显示全部楼层
小布丁 发表于 2013-8-25 13:07
构造函数是和具体对象直接关联的,静态的是全局的,只和类关联,和具体对象没有任何关联,构造函数怎么可能 ...

正解,楼主你的错误主要是 this表达式写错了哦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-8-25 14:24:00 | 显示全部楼层
小布丁 发表于 2013-8-25 13:07
楼上说错了吧,构造函数是和具体对象直接关联的,静态的是全局的,只和类关联,和具体对象没有任何关联,构 ...

不是的呀,我这样写this(new T());
是为了调用它上面的构造函数啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-8-25 14:24:36 | 显示全部楼层
湮汐 发表于 2013-8-25 13:14
正解,楼主你的错误主要是 this表达式写错了哦!

不是的呀,我这样写this(new T());
是为了调用它上面的构造函数啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 02:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表