Java 这段代码中的错误是什么

Java 这段代码中的错误是什么,java,testing,Java,Testing,我正在阅读测试的重要性,作为一个例子,出现了以下代码: public Scheme join(final Scheme other) { final HashSet<Attribute> $ = new HashSet<Attribute>(); for (int i = 0; i < attributes.length; ++i) $.add(attributes[i]); for (int i = 0; i <

我正在阅读测试的重要性,作为一个例子,出现了以下代码:

public Scheme join(final Scheme other) {
    final HashSet<Attribute> $ = new HashSet<Attribute>();

    for (int i = 0; i < attributes.length; ++i)
        $.add(attributes[i]);

    for (int i = 0; i < attributes.length; ++i)
        $.add(other.attributes[i]);
    return new Scheme(true, $.toArray(new Attribute[$.size()]));
}
公共方案加入(最终方案其他){
final HashSet$=新HashSet();
对于(int i=0;i
它说它在Scehme.join()中有一个bug
但是我一个也看不见

错误在您的第二个循环中:

// Here ------------v
for (int i = 0; i < attributes.length; ++i)
    $.add(other.attributes[i]);
我猜他会在这里

final HashSet$=new HashSet()


左边是
属性
,右边是
属性
,因为java是区分大小写的语言,这是两个不同的对象

在$sign上有一个观察:这不是一个bug,但代码的质量确实很差。变量名是合法的-这不是bug你不能使用
{}括号
在for循环中,当代码增加时很难处理。谁说有错误,它到底说了什么?抱歉,这是一个错误typo@Siham,然后看一下T.J.Crowder的回答谢谢,这是一个打字错误,我试着复制,但没有成功。我想这是代码复制缺点的一个例子。
public Scheme join(final Scheme other) {
    final HashSet<Attribute> $ = new HashSet<Attribute>();

    for (Attribute attr : attributes) {
        $.add(attr);
    }

    for (Attribute attr : other.attributes) {
        $.add(attr);
    }

    return new Scheme(true, $.toArray(new Attribute[$.size()]));
}