这样写有什么好处?

shinesi 2003-03-19 05:31:04
class A
{
static class B implements Icon // (1)
{
static class State // (2)
{
public static final State Normal = new State(); //(3)
public static final State Pressed = new State();
public static final State Rollover = new State();
private State();
}
State state;

public B( State state )
{
this.state = state;
}
}

}

问题:
A : (1) 和 (2) 这里为什么要申明为static类,是因为(3)这里吗?

B : 我看它实现class State 为的就是标识状态,为什么要写得这么累,这样

写有什么好处?
...全文
46 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
halcyon 2003-03-20
  • 打赏
  • 举报
回复
因为CLASS B也是静态的,若STATE非静态,则B.STATE会报错
shinesi 2003-03-20
  • 打赏
  • 举报
回复
没人能说清楚????
shinesi 2003-03-20
  • 打赏
  • 举报
回复

UP
loxi 2003-03-20
  • 打赏
  • 举报
回复
不错,感觉清楚了很多!!

谢谢
翻了一下tij,差不多就是这样了
hoxisoft 2003-03-20
  • 打赏
  • 举报
回复
在说static(静态)的作用:

它可以满足以下两个情况中的特殊需求:

一种情形是只想用一个存储区域来保存一个特定的数据——无论要创建多少个对
象,甚至根本不创建对象。

另一种情形是我们需要一个特殊的方法,它没有与这个类的任何对象关联。也就
是说,即使没有创建对象,也需要一个能调用的方法。


关于static(静态),THINKING IN JAVA里讲得很清楚透彻,为什么不去看看那???

OK???

:0
hoxisoft 2003-03-20
  • 打赏
  • 举报
回复
这是java中最基本也是最令人迷惑的地方-----一切staic的函数和变量,都先于类之前初
始化或执行
shinesi 2003-03-20
  • 打赏
  • 举报
回复

现在我想知道把class申明为static通常起什么作用?
hoxisoft 2003-03-20
  • 打赏
  • 举报
回复
对于问题1:

调用非staic函数的前提是必须对包含该函数的类进行实例化,如果不实例化,
是绝对不行的。而你没有做实例化的工作,所以,必须(1)声明为staic。

因为程序先声明了CLASS B是 静态的,
对于这个静态方法,同样可以不用new就可以进行访问,但这个静态方法里面不能直接
访问这个类里面的非静态变量或者方法,也就是说(2)STATE 必须也得声明为静
态的。

楼主 OK?



对于问题2:

static 函数不用实例化就可以直接调用,很省事、简单!
这个就是这样写的好处!!!

OK???
shine333 2003-03-20
  • 打赏
  • 举报
回复
non-static inner class can access the non-static outer class field members
static inner class don't need to do that, and all outer class instances share the same static inner class
yashiro 2003-03-19
  • 打赏
  • 举报
回复
生命为静态,不然在进行上下文访问的时候会出现错误。

62,614

社区成员

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

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