gpt4 book ai didi

java - toString 使用泛型变量?

转载 作者:行者123 更新时间:2023-12-05 00:38:51 26 4
gpt4 key购买 nike

所以我这里有这个 Bag 类,我向它添加了一个 remove(T x) 方法,现在我想打印这个,我知道我必须使用 toString () 方法,但我不断收到编译错误或仍然收到对象 b 的哈希码......我对此有解释但仍然不起作用,我的解决方案(特别的)在 return bag[i] 行给我错误:(

class Bag<T> {// generic class with T standing for a class

private T[] bag =(T[])(new Object[100]);
private int numElements = 0; // junk in bag[numElements..]

void add(T x) { // put x in bag
bag[numElements] = x; numElements++;
}

void remove (T x){
if(x!=null && numElements>0){
for(int i = 0; i < numElements; i++){
if(bag[i]==x){
bag[i]=bag[numElements];
numElements-=1;
}
}
}
}

int freq(T x) { // how many x’s in bag?
int count = 0;
for (int i=0; i<numElements; i++)
if (bag[i].equals(x)) // .equals because T a class
count++;
return count;
}

public String toString(){
for(int i = 0; i < numElements; i++){
return bag[i];
}
}
}

class GenericExample {
public static void main(String[] args) {
Bag<String> b = new Bag<String>();
b.add("cat"); b.add("dog"); b.add("cat");

}
}

我也试过输入 String.valueOf(bag[i]) 但仍然有编译错误...为什么还是有问题?在这个例子中,T 是一个字符串,所以我不明白为什么要这样做。

最佳答案

你可能想在下面更改 toString 方法:

public String toString(){
return Arrays.toString(bag);
}

或自制版本

public String toString(){
StringBuilder sb = new StringBuilder();
for(int i = 0; i < numElements; i++){
sb.append(bag[i]);
}
return sb.toString();
}

如果你放入包中的对象没有覆盖 toString,那么你会得到一串哈希码。

关于java - toString 使用泛型变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20658091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com