我正在努力用Java来解决问题。如何使用方法giveCode()返回对象的整数值。这是由我们的讲师预先编写的代码,我们必须使用它来返回对象的整数值,它将在为哈希表创建哈希值时使用。
HashCode.java
// Interface for HashCode. Has only one method declaration
public interface HashCode {
// For an input object, computes and returns its HashCode as an integer
public int giveCode(Object o);
}
StringHashCode.java(我创建了这个类,因为我们应该在这个类中实现HashCode类)
public abstract class StringHashCode implements HashCode{
}
我在我的主要部分尝试了这样的事情,只是为了简单地返回代码值,所以我可以看到它是如何工作的,但似乎没有任何工作:
System.out.println(new StringHashCode.giveCode(example_object));
或者
System.out.println(new StringHashCode.giveCode(example_object.hashCode()));
或者
System.out.print(HashCode.giveCode(example_object));
我对Java很新,但我对其他OOP语言有很多经验,但我似乎无法掌握这个问题,我觉得这可能是愚蠢的,但我不能把它弄出来。
答案 0 :(得分:1)
由于您的讲师为您提供了该界面,您必须实施它。那可能是一堂课。它可以是您可能不需要的另一个接口,Abstract类对您的解决方案没用,所以使用简单的类并实现该接口。
class HashCodeImpl implements HashCode {
@Overwide
public int getCode(Object obj) {
return obj.hashCode();
}
}
并且在main方法中,该类应该用作
class Main {
public static void main(String[] args){
HashCodeImpl impl = new HashCodeImpl();
System.out.println(impl.getCode(new String()));
}
}
现在在你的问题中,我不知道你是如何得到任何输出的,因为你的系统都没有编译。
System.out.println(new StringHashCode.giveCode(example_object));
此类的giveCode方法不是静态的,因此不会编译
System.out.println(new StringHashCode.giveCode(example_object.hashCode()));
同样的原因,giveCode不是静态的,所以它不会编译,你必须传入一个对象和类假设返回有代码。在这种情况下,您将哈希代码传递给方法。
System.out.print(HashCode.giveCode(example_object));
编译错误,因为HashCode是一个类似于原型的接口,你必须实现它来创建具体的类。
答案 1 :(得分:0)
修复这些问题,它会更好地为您服务。
public class StringHashCode implements HashCode{
public int giveCode(Object o) {
return o.hashCode(); // Replace this with your own implementation
}
}
System.out.println(new StringHashCode().giveCode(example_object));
答案 2 :(得分:0)
new StringHashCode()
。