import java.util.*;
class CollectionsDemo
{
public static void main(String[] args)
{
System.out.println("Hello World!");
sortDemo();
}
public static void sortDemo()
{
List<String> list = new ArrayList<String>();
list.add("dsa");
list.add("dss");
list.add("dssas");
list.add("dsada");
list.add("dssa");
list.add("dsdas");
list.add("dswa");
sop(list);
LengthComparator it= new LengthComparator();
Collections.sort(list, it);
sop(list); }
public static void sop(List list)
{
System.out.println(list);
}
class LengthComparator implements Comparator<String>
{
public int compare(String s1,String s2)
{
if(s1.length()>s2.length())
return 1;
if(s1.length()<s2.length())
return -1;
return s1.compareTo(s2);
}
}
}
为什么这个程序编译不通过啊 ???这是提示
CollectionsDemo.java:20: 错误: 无法从静态上下文中引用非静态 变量 this
LengthComparator it= new LengthComparator();
class CollectionsDemo
{
public static void main(String[] args)
{
System.out.println("Hello World!");
sortDemo();
}
public static void sortDemo()
{
List<String> list = new ArrayList<String>();
list.add("dsa");
list.add("dss");
list.add("dssas");
list.add("dsada");
list.add("dssa");
list.add("dsdas");
list.add("dswa");
sop(list);
LengthComparator it= new LengthComparator();
Collections.sort(list, it);
sop(list); }
public static void sop(List list)
{
System.out.println(list);
}
class LengthComparator implements Comparator<String>
{
public int compare(String s1,String s2)
{
if(s1.length()>s2.length())
return 1;
if(s1.length()<s2.length())
return -1;
return s1.compareTo(s2);
}
}
}
为什么这个程序编译不通过啊 ???这是提示
CollectionsDemo.java:20: 错误: 无法从静态上下文中引用非静态 变量 this
LengthComparator it= new LengthComparator();
将LengthComparator类变为静态的就可以了
static class LengthComparator implements Comparator<String>
{......}
希望可以帮到你
解决方法一: 将内部类LengthComparator拿到CollectionsDemo类外面 简单粗暴,推荐!
解决方法二: LengthComparator it = new CollectionsDemo().new LengthComparator(); 使用这条代码new内部类
解决方法三: 如前面的朋友所说 CollectionsDemo类前加static关键字 用 CollectionsDemo.LengthComparator it = new LengthComparator(); new内部类
class CollectionsDemo
{
public static void main(String[] args)
{
System.out.println("Hello World!");
sortDemo();
}
public static void sortDemo()
{
List<String> list = new ArrayList<String>();
list.add("dsa");
list.add("dss");
list.add("dssas");
list.add("dsada");
list.add("dssa");
list.add("dsdas");
list.add("dswa");
sop(list);
LengthComparator it= new CollectionsDemo().new LengthComparator();//因为LengthComparator为CollectionsDemo的内部类
Collections.sort(list, it);
sop(list);
}
public static void sop(List list)
{
System.out.println(list);
}
class LengthComparator implements Comparator<String>
{
public int compare(String s1,String s2)
{
if(s1.length()>s2.length())
return 1;
if(s1.length()<s2.length())
return -1;
return s1.compareTo(s2);
} }
}
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class C {
public static void main(String[] args) {
System.out.println("Hello World!");
sortDemo();
}public static void sortDemo() {
List<String> list = new ArrayList<String>();
list.add("dsa");
list.add("dss");
list.add("dssas");
list.add("dsada");
list.add("dssa");
list.add("dsdas");
list.add("dswa");
sop(list);
LengthComparator it = new LengthComparator();
Collections.sort(list, it);
sop(list);}public static void sop(List list) {
System.out.println(list);
}}
class LengthComparator implements Comparator<String> {
public int compare(String s1, String s2) {
if (s1.length() > s2.length())
return 1;
if (s1.length() < s2.length())
return -1;
return s1.compareTo(s2);
}
}