java 文件1 java1.javaimport java.util.*;
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
class Student extends Person
{
Student(String name,int age)
{
super(name,age);
}
}
java 文件2 java2.java
import java.util.*;
class GenericApplication2
{
public static void main(String[] args)
{
TreeSet<Student > ts = new TreeSet<Student > (new Mycompp ( ));//这里为什么提示 无法从静态上下文中引用非静态 变量 this????????????????????????????
ts.add(new Student ( "zhangsan1-st",21));
ts.add(new Student ( "zhangsan2-st",22));
ts.add(new Student ( "zhangsan3-st",23));
ts.add(new Student ( "zhangsan0-st",23));
ts.add(new Student ( "zhangsan3-st",22));
printColl(ts);
}
//比较器
static class Mycompp implements Comparator<Student >//这里如果为什么必须加静态?如果不加就会编译错误????????????????????????同上面的问题
{
public int compare(Student s1,Student s2)
{
int num = s1.getName().compareTo(s2.getName());
if (num ==0)
{
return new Integer (s1.getAge()).compareTo(new Integer(s2.getAge()));
}
return num;
}
}
public static void printColl (TreeSet<Student > al
{
Iterator<Student > it = al.iterator();
while (it.hasNext())
{
System.out.println("it.next()===="+it.next().getName());
}
}
}
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
class Student extends Person
{
Student(String name,int age)
{
super(name,age);
}
}
java 文件2 java2.java
import java.util.*;
class GenericApplication2
{
public static void main(String[] args)
{
TreeSet<Student > ts = new TreeSet<Student > (new Mycompp ( ));//这里为什么提示 无法从静态上下文中引用非静态 变量 this????????????????????????????
ts.add(new Student ( "zhangsan1-st",21));
ts.add(new Student ( "zhangsan2-st",22));
ts.add(new Student ( "zhangsan3-st",23));
ts.add(new Student ( "zhangsan0-st",23));
ts.add(new Student ( "zhangsan3-st",22));
printColl(ts);
}
//比较器
static class Mycompp implements Comparator<Student >//这里如果为什么必须加静态?如果不加就会编译错误????????????????????????同上面的问题
{
public int compare(Student s1,Student s2)
{
int num = s1.getName().compareTo(s2.getName());
if (num ==0)
{
return new Integer (s1.getAge()).compareTo(new Integer(s2.getAge()));
}
return num;
}
}
public static void printColl (TreeSet<Student > al
{
Iterator<Student > it = al.iterator();
while (it.hasNext())
{
System.out.println("it.next()===="+it.next().getName());
}
}
}
解决方案 »
- java 代码不能运行,高手指点
- 关于一个jni的问题
- 连接mysql的时候报错Access denied for user: '[email protected]' (Using password: YES)
- 关于switch的问题
- 为什么我没有oracle.sql.BLOB.empty_lob()这个函数?
- 在java中怎样读取文件的内容?急,在线等!
- 想换工作,上海乙木有那位哥哥知晓或者在理面?
- 用jxl操作excel文件,我想读取日期单元格为yyyy-mm-dd格式,请问怎样设置?
- 求助啊。
- 数组在内存中如何存储??
- 请问用jacob 操作IamgeMagick 实现的pdf转换成html的代码怎么写
- 就是想找点志同道合的朋友
问题二 :main方法是static的 所以你所有调用的成员必须是static的。
2) 静态方法中只能引用静态的,或者说整个类所共有的变量,理由是,调用某个类的静态方法时,该类的实例可能还未生成,因此实例(非静态)变量/成员/方法是不可以在静态方法中使用的
3) Mycompp是GenericApplication2这个类的一个内部成员类,如果不加static的话,是无法在该类main方法中使用的
4) 如果把Mycompp拿到GenericApplication2的外面去,或者把main方法换到另外一个Test类中去,Mycompp前面的static是可以去掉的
关于3,4,
a u sure?package A;import java.util.Comparator;public class StaticInner { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StaticInner si = new StaticInner();
A a = si.new A();
System.out.println(a.i);
}
class A implements Comparator{
int i = 10;
public int compare(Object o1, Object o2){
return 0;
}
}}
呵呵,这本来就是JAVA支持的正规的可用语法特性。
如果JAVA不支持,我无论怎么取巧,写出来编译器也不会认的。