刚学Java,打了几行代码,有一行变红。感觉没有错。大佬们能帮我瞅瞅吗

/**

  • */ package temp1;

/**

  • @author Dayuz * / import java.util.; class Dog{ void bark(){ System.out.println("wang wang "); } } public class test1 { ArrayList a=new ArrayList(); Dog b =new Dog(); a.add(b);

}
最后一行:a.add(b);显示出错

 ArrayList a=new ArrayList(); 

修改为

 ArrayList<Dog> a=new ArrayList<Dog>(); 

若想指定添加dog类,应该指定泛型。

Dog b =new Dog(); a.add(b) 需要在一个方法体中

ArrayList a=new ArrayList();
修改为

ArrayList a=new ArrayList();

public class test11{

public static void main(String[] args) {

    ArrayList list=new ArrayList();
    Dog b=new Dog();
    list.add(b);
}
要在一个main方法体中

}

public class test1{// 1)
// 2)
ArrayList a=new ArrayList();//3
Dog b =new Dog();//4
a.add(b);//5
}
如上注释,test1是一个类,而在类中可以定义方法和类变量(也称为属性)而不能执行语句(调用函数)
所以3和4是不报错的,因为3和4相当于为test1这个类声明了两个默认访问权限的变量(属性),并且在声明的同时进行了初始化。这是允许的;
而5则是调用了a这个属性成员的add方法,这是不允许的。

ArrayList是一个泛型类,可以这样写
ArrayList dogs=new ArrayList();//a
也可以这样写ArrayList dogs=new ArrayList();//b
如果使用a,那么dogs里只能添加Dog了,你调用dogs.add(cat);就会出错~
如果是b,那么一切对象都可以添加到狗队列啦,因为b的默认泛型是Object,java中的所有类都是Object,所以使用b准确的说得到的不是一个狗队列
而是一个万能队列;当然,这和报错是没有关系的*-*,多了解一些总是好的~加油!

加上一个main就对了

根本不是泛型的问题 就是 要写在方法内部

没有mian方法来执行,怎么运行

图片说明

你是没有写方法体加上main 方法

刚开始学习Java 注意编码规范: 类名首字母大写
test是关键字,最好不要当类名

public class test1 {
public static void main(String[] args) {
List a=new ArrayList();
Dog b =new Dog();
a.add(b);
}
}

test1没有写main方法

这个你应该是在eclipse上面进行编写的,这种橘色的线前期不用理会,代码运行是绝对没有问题的。。只要是窗口左边没有叉叉就可以啦、、、

ArrayList a=new ArrayList();
Dog b =new Dog();
a.add(b);

这三行代码应该在一个方法体里面,比如:
public class test1 {
void test() {
ArrayList a = new ArrayList();
Dog b = new Dog();
a.add(b);
}
}

ArrayList a=new ArrayList(); 换成main 方法测试

真的是新手,可以多看看基础知识