Java 使用泛型变量进行字符串转换?

Java 使用泛型变量进行字符串转换?,java,generics,tostring,Java,Generics,Tostring,我在这里有一个Bag类,我在其中添加了一个remove(tx)方法,现在我想打印这个,我知道我必须使用toString()方法,但是我不断得到编译错误或者仍然得到对象b的哈希代码。。。这是我的解释,但仍然不起作用,我的解决方案(特定)在返回包[i]行中给出了错误:( class-Bag{//T代表类的泛型类 私有T[]包=(T[])(新对象[100]); private int numElements=0;//包中的垃圾[numElements..] 无效添加(tx){//将x放入袋中 包[nu

我在这里有一个Bag类,我在其中添加了一个
remove(tx)
方法,现在我想打印这个,我知道我必须使用
toString()
方法,但是我不断得到编译错误或者仍然得到对象
b
的哈希代码。。。这是我的解释,但仍然不起作用,我的解决方案(特定)在
返回包[i]
行中给出了错误:(

class-Bag{//T代表类的泛型类
私有T[]包=(T[])(新对象[100]);
private int numElements=0;//包中的垃圾[numElements..]
无效添加(tx){//将x放入袋中
包[numElements]=x;numElements++;
}
脱空(T x){
如果(x!=null&&numElements>0){
对于(int i=0;i对于(int i=0;i,当需要字符串时,不能返回对象

使用
return bag[i].toString()

公共字符串toString(){
对于(int i=0;i
您只能从函数返回一次。您不能将return语句放在loop中。您可能可以使用将所有数据追加到循环中,并对其进行最后的toString()调用,然后从循环外部返回。

使用:

你喜欢这样吗

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

您可能希望通过以下方式更改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(){
StringBuilder sb=新的StringBuilder();
对于(int i=0;i

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

为什么要多次返回?您只是想像这样连接所有索引值吗

public String toString(){
    StringBuilder sb = new StringBuilder();

    for(int i = 0; i < numElements; i++){
        sb.append(bag[i] + ", ");
    }

    return sb.toString();
}
公共字符串toString(){
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
为什么要尝试多次返回?实际上并不是这样。使用该循环我们到底想实现什么?@peeskillet我试图打印一长串数组内容:/not work:(我收到以下消息:
GenericExample.java:30:错误:找不到符号返回数组。toString(bag);^symbol:变量数组位置:类包,其中T是类型变量:T扩展类包中声明的对象注意:GenericExample.java使用未经检查或不安全的操作。注意:使用-Xlint:unchecked重新编译以获取详细信息。1错误
@ChrisDobkowski请添加此行import java.util.Arrays;在你的导入中。宾果:D它起作用了,但我得到的非常有趣:P[cat,dog,cat,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,…]@ChrisDobkowski这个新对象[100]行将创建100个固定内存,这些内存最初将填充空值。您尝试使用ArrayList。如果可以,我会这样做:P但这是一个固定的练习,它使用数组作为示例:(我在其他注释中看到您缺少导入。
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();
}
public String toString(){
    StringBuilder sb = new StringBuilder();

    for(int i = 0; i < numElements; i++){
        sb.append(bag[i] + ", ");
    }

    return sb.toString();
}