Ich habe ein Labor für Datenstrukturen und die Lehrer fragen mich „create‚Klasse IpAddressValueHasher implementiert Hasher‘so, wenn Sie Überschreibung Hash (IpAddress) es ein langes Objekt für den zu hashCode Aufruf des ipValue des Parameters gibt. Das Problem ist, dass ich weiß nicht, wie die Schnittstelle außer Kraft zu setzen (die einen int zurückgibt), die eine Methode, die eine lange zurückgibt.Kann eine Interface-Methode mit einem anderen Rückgabewert überschrieben werden?
Hilfe oder Zeiger würden großer dank
public class IpAddressValueHasher implements Hasher<IpAddress> {
@Override
public long hash(IpAddress ip) { //error on this line, can't return long
long ipValue = ip.getIpValue();
return ipValue;
}
}
public class IpAddress //new class
{
private long ipValue=0;
private String dottedDecimal="0.0.0.0";
public IpAddress(){}
public IpAddress(String dec)
{
setDottedDecimal(dec);
}
public boolean setDottedDecimal(String s)
{
if(s==null || s.length() == 0)
return false;
dottedDecimal = s;
ipValue = 0;
String [] tokens = s.split("[.]");
for(String tok : tokens){
int subVal = Integer.parseInt(tok);
ipValue = ipValue * 256 + subVal;
} // end for
return true;
}
public long getIpValue(){ return ipValue; }
public String getDottedDecimal(){ return dottedDecimal; }
public String toString(){ return dottedDecimal + ", " + Long.toHexString(ipValue); }
} // end class IpAddress
public interface Hasher<E> {
public int hash(E elem);
}
'public interface Hasher {public V hash (K Elem); } ' –
Ich glaube nicht, dass ich die Schnittstelle selbst ändern kann, da dieser Code vom Lehrer bereitgestellt wurde. Gibt es das überhaupt nur während der Erstellung des neuen Klassencodes? –
Sie können nicht, der Punkt einer Schnittstelle ist, dass es die Schnittstelle definiert. Elloitts Vorschlag ist der einzige Weg, um dies zu erreichen –