一个关于package中class互相调用的问题,100分,请各位看看(100分)

  • 主题发起人 主题发起人 黑衣人
  • 开始时间 开始时间

黑衣人

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟写一个java bean,多个class都在forum这个package下,现在有一个ShowContent.java
要调用HtmlEncode.java中的方法encodeOut,部分代码如下:
//-----------在ShowContent.java中-----------
package forum;
……从数据库中取数据
while(rs.next){
topic.addElement(rs.getString(1));
topic.addElement(HtmlEncode.encodeOut(rs.getString(2)));--这里出现错误
}
报什么非静态方法不能使用静态常量的错误,具体不记得了。我想可能是package中相关类
调用方式有问题,请问怎样实现,谢谢!
 
应该是静态方法不能使用非静态变量或常量,具体英文错误信息呢?看看你的方法声明
 
差不多吧,我的方法都是public呀,HtmlEncode.java大概内容如下(内容比较多,记不全了,但是主要的细节是不会错的):
//----------HtmlEncode.java开始----------
package forum;
public class HtmlEncode {
public HtmlEncode() {}//构造函数
public String showFace(String pInitString) {
//代码省略
}
public String encodeOut(String pInitString) {
return showFace(pInitString);//调用showFace()方法
}
}
//----------HtmlEncode.java结束----------
然后按一楼的方式在ShowContent.java中调用encodeOut方法,结果报错,是不是public关
键字不对?要换成其他的?
 
>>>HtmlEncode.encodeOut
你这是静态调用encodeOut,而HtmlEncode.java中又声明为实例方法:
public String encodeOut(String pInitString)
当然出错了,应该先生成对象再调用encodeOut方法
HtmlEncode he=new HtmlEncode();
topic.addElement(he.encodeOut(rs.getString(2)));

 
如果你这里声明为静态static
public static String encodeOut(String pInitString)
但因为在这个静态方法里调用了非静态方法showFace(pInitString)是不允许的
所以,只能用以上构造实例方法调用
HtmlEncode he=new HtmlEncode();
...
 
有道理,下班回去试试,成功了就给分——看样子老兄这一百分是拿定了,嚯嚯
 
我还是看不明白!
 
对,先实例化就对了,不然就在方法前家static
 
多谢各位捧场!
 
我也遇到同样问题
 
后退
顶部