私はまさにこのようなクラスを持っています:
public class Operator {
private String oper;
private boolean ltr;
private int pc;
//Ignore these methods...
public Operator(String t,int prc,boolean as) {oper=t;pc=-prc;ltr=as;}
public int precedence() {return pc;}
public boolean associativity() {return ltr;}
public String getName() {return oper;}
public int hashCode() {
int hash = 3;
hash = 19 * hash + (this.oper != null ? this.oper.hashCode() : 0);
hash = 19 * hash + (this.ltr ? 1 : 0);
hash = 19 * hash + this.pc;
return hash;
}
public boolean equals(Object o){
if (o instanceof String){
return oper.equals(o);
}
return false;
}
public String toString(){
return oper;
}
}
私がそうするとき:System.out.println(new Operator("+",4,true).equals("+"));
それはtrueを出力します、それはequalsメソッドが機能していることを意味します。
しかし、私がこれを行うとき:
Vector oprs = new Vector();
oprs.addElement(new Operator("+",4,true));
int iof = oprs.indexOf("+");
System.out.println(iof);
iofは-1
です。手動検索はそれをうまく見つけて、System.out.println(oprs.elementAt(0));
印刷し+
ます。私は(Java SEのように)要素を見つけるためにメソッドをindexOf
使用すると思っequals
たのに、なぜ地球上で機能しないのoprs.indexOf
ですか?