作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我这里有这个 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/
我是一名优秀的程序员,十分优秀!