友来友网 发表于 2013-8-25 12:39:02

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

本帖最后由 百日维新 于 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)

湮汐 发表于 2013-8-25 12:39:03

友来友网 发表于 2013-8-25 14:24 static/image/common/back.gif
不是的呀,我这样写this(new T());
是为了调用它上面的构造函数啊

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

牡丹花下死做鬼 发表于 2013-8-25 12:43:02

大哥 你不觉得你发错地方了吗??

╰つ今生只为 发表于 2013-8-25 12:56:31

因为构造函数是静态!

小布丁 发表于 2013-8-25 13:07:02

本帖最后由 小布丁 于 2013-8-25 13:15 编辑

楼上说错了吧,构造函数是和具体对象直接关联的,静态的是全局的,只和类关联,和具体对象没有任何关联,构造函数怎么可能是静态的,除非有静态代码块,这段代码也没有静态代码块。
报错的那一行 改为this.new T()或者直接不要this也行

湮汐 发表于 2013-8-25 13:14:49

小布丁 发表于 2013-8-25 13:07 static/image/common/back.gif
构造函数是和具体对象直接关联的,静态的是全局的,只和类关联,和具体对象没有任何关联,构造函数怎么可能 ...

正解,楼主你的错误主要是 this表达式写错了哦!

友来友网 发表于 2013-8-25 14:24:00

小布丁 发表于 2013-8-25 13:07 static/image/common/back.gif
楼上说错了吧,构造函数是和具体对象直接关联的,静态的是全局的,只和类关联,和具体对象没有任何关联,构 ...

不是的呀,我这样写this(new T());
是为了调用它上面的构造函数啊

友来友网 发表于 2013-8-25 14:24:36

湮汐 发表于 2013-8-25 13:14 static/image/common/back.gif
正解,楼主你的错误主要是 this表达式写错了哦!

不是的呀,我这样写this(new T());
是为了调用它上面的构造函数啊
页: [1]
查看完整版本: 一个java内部类的问题,求鱼油解答