这是我的第一篇文章。这是针对Java 7的。
谁能告诉我为什么我不能访问CompareIpaddress类中的"first.a“?(我不知道为什么SOF不允许我发布这篇文章,除非我输入更多的东西...)这个填充物够了吗?
谢谢,戈登
import java.util.Comparator;
import java.util.*; // just in case i need it.
import java.util.TreeSet;
public class CompareIpaddress <IPaddress >implements Comparator<IPaddress>
{
/************************************************compare()**/
public int compare (IPaddress first, IPaddress second)
{
if( first.a < second.a )
{
return -1;
}
}
}
import java.util.Comparator;
import java.util.*;
import java.util.TreeSet;
public class IPaddress
{
public int a, b, c, d;
IPaddress (int a, int b, int c, int d)
{
this.a=a;
this.b=b;
this.c=c;
this.d=d;
}
public int getA()
{
return a;
}
}发布于 2013-05-25 17:17:23
public class CompareIpaddress <IPaddress >implements Comparator<IPaddress>您将IPaddress设置为CompareIpaddress的类型参数,因此它是任意类型,而不是同名的类。
由于并非每个类都有可访问的成员a,因此编译器找不到该符号。
public class CompareIpaddress implements Comparator<IPaddress>才是正确的方式。
(对于其他情况,您也需要返回值,但我认为您在这个问题中已经减少了返回值。)
发布于 2013-05-25 17:17:32
删除public class CompareIpaddress <IPaddress> implements Comparator<IPaddress>中的类型参数IPaddress。通过这种方式,您可以使用一个类型参数来隐藏类名IPaddress。
实际上,这里根本不需要类型参数。将其更改为public class CompareIpaddress implements Comparator<IPaddress>,一切都会正常。
发布于 2013-05-25 17:15:42
public int compare (IPaddress first, IPaddress second)
{
if( first.a < second.a )
{
return -1;
}
}这段代码无法编译,因为当您声明一个返回类型为int的方法时,它必须始终返回类型为的int。目前,它只在first.a小于second.a时返回值。您应该添加一些其他情况,以涵盖所有可能发生的情况:
if(first.a < second.a)
{
return -1;
}
else if(first.a > second.a)
{
return 1;
}
else
{
return 0;
}https://stackoverflow.com/questions/16748039
复制相似问题