无法从静态上下文中引用非静态变量

afunx 2009-10-31 10:57:34
在GUI中,有方法private void jTButtonActionPerformed(Event evt){A},为了使函数模块化,我打算把方法private void jTButtonActionPerformed(Event evt)中的A放到同一个包中的一个新建的类BaseAction中,改为这样的结构:
private void jTButtonActionPerformed(Event evt){BaseAction.method()}
BaseAction中有一个方法为method。但是,我现在在BaseAction中method里面想要调用jTButton.isSelected(),判断BUTTON的状态时,被告知“无法从静态上下文中引用非静态变量”。请问大虾们,如何解决是好。
...全文
383 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
一洽客服系统 2009-11-01
  • 打赏
  • 举报
回复
重点看看 static 关键字吧。
static修饰的变量时在java类未实例化对象的时候就已经编译存在的。
static方法也是一样 不用实例化直接调用。
static{}代码块就更容易理解了 项目只要启动 这个代码块就已经执行了 。
zhengzeng 2009-11-01
  • 打赏
  • 举报
回复
ResultSet.TYPE_SCROLL_INSENSITIVE:可滚动。但是不受其他用户对数据库更改的影响。
使用这个类型之后,你就可以使用 resultset.first()、last()等等
ResultSet.TYPE_SCROLL_SENSITIVE:可滚动和TYPE_SCROLL_INSENSITIVE。
很多人说还有一个功能:当其他用户更改数据库时这个记录也会改变。
当然这个是放屁的,专门误导别人的。是否支持这个功能要 看你的所用数据库、所用的驱动版本。
mysql 某一版本好像是这个功能,不过也是其他用户update记录时,会反映到ResultSet。oracle不支持。
JDBC只是一个规范,具体的实现要数据库厂商。有些不常用的,还是不要用。
zhengzeng 2009-11-01
  • 打赏
  • 举报
回复
你要用的 引用对象用参数形式 传给 静态方法
LC3TWZ 2009-11-01
  • 打赏
  • 举报
回复
1.如楼上所说
2.在你的方法内定义
wang12 2009-11-01
  • 打赏
  • 举报
回复
声明为static的方法中访问实例变量时,不能确保实例变量已经被初始化。所以不能存静态上下文中访问非静态变量。你可以将需要访问的实例变量声明为static并初始化。
victor_woo 2009-10-31
  • 打赏
  • 举报
回复
无法从静态上下文中引用非静态变量:确实这样

所谓静态上下文,就是一个静态方法,你不能在其中直接调用所在类的非静态成员变量

class circle
{
static double PI=3.14;
double r = 0.0;
public circle(double r) {this r = r;}
public double area() {return PI*this.r*this.r}; //ok
public static double area(Circle c) {return PI*c.r*c.r}; //ok
public static double area2(Circle c) {return PI*r*r}; //error
}


这个会出同样的错误,我没有编译,不确定
wujingsonggegege 2009-10-31
  • 打赏
  • 举报
回复
249787080@qq.com发油箱帮你参考下吧。。。

62,615

社区成员

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

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