A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我刚学了内部类 想用一下
我想实现一个多接口继承的类WORKERS`
然后用ARRAY中的SORT方法对其对象进行排序(按照工龄(Wyear)的大小来排)`
最后输出相应对象的NAME成员变量`
代码如下:

import java.util.Arrays;
public class MyTest1
{
public interface person
{
String getName();
String getSex();
}
class Workers implements person,Comparable
{
private String name;
private String sex;
private int Wyear;
public Workers(String strname,String strsex,int year)
{
name=strname;
sex=strsex;
Wyear=year;
}
public String getName()
{
return name;
}
public String getSex()
{
return sex;
}
public int getWyear()
{
return Wyear;
}
public int compareTo(Object otherObject)
{
Workers other=(Workers)otherObject;
int otherWyear=other.Wyear;
int thisWyear=this.Wyear;
if(thisWyear>otherWyear)
return 1;
else if(thisWyear==otherWyear)
return 0;
else
return -1;
}

}
public static void main(String[] args)
{
Workers[] staff=new Workers[3];
staff[0]=new Workers("jojo","man",10);
staff[1]=new Workers("jeff","man",5);
staff[2]=new Workers("lina","woman",7);
Arrays.sort(staff);
for(int i=0;i<staff.length;i++)
{
System.out.println(staff[i].name);
}
}
}
可是编译时候出现同样的错误`
错误如下:
Mytest1.java:49:无法从静态上下文中引用非静态变量this
staff[0]=new Workers("jojo","man",10);
剩下的两个对象的创建也都是同样的错误。。。。
测试了半天没能通过
真心求指点啊

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
To 金牌黑马 2013-5-17 19:15:57
沙发
坐等楼下解答{:soso_e193:}
回复 使用道具 举报
在创建非静态内部类的实例时,外部类的实例必须存在。        创建内部类对象时先 new一个外部类,再new内部类
修改下面代码就好了
Workers[] staff = new Workers[3];
                staff[0] = new MyTest1().new Workers("jojo", "man", 10);
                staff[1] = new MyTest1().new Workers("jeff", "man", 5);
                staff[2] = new MyTest1().new Workers("lina", "woman", 7);
回复 使用道具 举报
你可以这么理解,内部类相当于外部类中的成员,你想要访问一个类中的成员,就要先new出这个类才能访问 这个类中的成员
回复 使用道具 举报
如果问题已解决请再次编辑,改为以解决,方便大家看帖,没有就继续追问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马