| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1932 人关注过本帖
标题:[求助]有关接口初始化的问题?
只看楼主 加入收藏
Sieben7
Rank: 2
等 级:论坛游民
帖 子:116
专家分:20
注 册:2007-4-16
收藏
得分:0 
这个么。。。

[此贴子已经被作者于2007-11-12 18:37:52编辑过]

2007-11-12 18:37
huwangvs
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:764
专家分:0
注 册:2007-2-4
收藏
得分:0 

昨天回去看了看。找到原因了。
原因就是final修饰符。
如果final修饰的是基本类型且这个基本类型已经赋了值。那么它就在编译器提前赋值。。那么在运行期就无须初始化而直接使用。此时就不用再加载包含它的类了。。所以K.i只打印一行。即i的值。
而如果final修饰类型为非基本类型,或以表达式赋值。那么它还是在运行期初始化。此时就需要加载包含它的类了。。
在此例中因为属性默认都是static的。所以在加载类的同时,都会初始化。所以K.j才会打印出三行来。

2007-11-13 08:56
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 
可是final在哪儿啊?

I'm here, as always...
2007-11-13 09:23
huwangvs
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:764
专家分:0
注 册:2007-2-4
收藏
得分:0 
接口里属性默认是static final的。。。
2007-11-13 09:40
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 
你把你写的那段代码发上来看下吧

I'm here, as always...
2007-11-13 09:48
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 

interface I {
int i = 1, ii = Outer.out("ii", 2);
}

interface J extends I {
int j = Outer.out("j", 3), jj = Outer.out1("jj", 4);
}

interface K extends J {
int k = Outer.out("k", 5), kk = Outer.out("kk", 6);
}

public class Outer {
public static void main(String[] args) {
System.out.println(K.j);
}

public static int out(String s, int i) {
System.out.println(s + "=" + i);
return i;
}

public static int out1(String s, int i){
System.out.println(s+"="+i);
return i;
}
}
原来如此,明白了,没注意到这个问题...


I'm here, as always...
2007-11-13 09:50
huwangvs
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:764
专家分:0
注 册:2007-2-4
收藏
得分:0 
回去debug了半天。。。感觉是final的问题。。。在thinking in java里还真找到了。。。
这种折磨人的问题也只有找thinking in java了。。。。
2007-11-13 10:00
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 
很多细节问题都没注意到...要好好复习一下了

I'm here, as always...
2007-11-13 10:06
huwangvs
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:764
专家分:0
注 册:2007-2-4
收藏
得分:0 

做开发很少遇到这种问题。。
谁没事写这种蹩脚的程序啊
以后还得多来看看开发太模式化了。

2007-11-13 10:11
huwangvs
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:764
专家分:0
注 册:2007-2-4
收藏
得分:0 
这程序还让我发现Intellij IDEA一个bug。。。
打印K.i的时候,直接运行打印1.。。debug就打印ii=2,1。。。郁闷半天。。。
2007-11-13 10:13
快速回复:[求助]有关接口初始化的问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012267 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved