在java中添加类的值

时间:2015-04-20 08:28:26

标签: java class arraylist

我的书中有一个问题说(没有答案):

  

假设我们有一个用标题声明的类Beta:

class Beta extends Alpha
     

所以Beta是Alpha的子类,而在Alpha类中有一个方法   标题:

public int value(Gamma gam) throws ValueException
     

编写一个名为addValues的静态方法,它接受一个对象   可以是ArrayList<Alpha>ArrayList<Beta>类型,也可以是。{   Gamma类型的对象。对addValues方法的调用必须返回   通过在每个上添加值的调用结果而获得的总和   ArrayList参数中的对象,Gamma参数为   每次价值召唤的论据。任何导致价值的价值召唤   应忽略要抛出的ValueException类型的异常   计算总和。

我的尝试:

public static int addValues(ArrayList<? extends Alpha> arr, Gamma gam) {
    int sum = 0;
    for (int i = 0; i < arr.size(); i++) {
        try {
            sum += arr.get(i) + gam;
        } catch (Exception e) {
            i++;
        }
    }
    return sum;
}

虽然我知道初学者行sum += arr.get(i) + gam会给我一个错误,因为它们不是可以添加的直接int。这本书没有提供关于这个问题的更多信息,所以我在这里写的是问题所需的一切。

2 个答案:

答案 0 :(得分:10)

您应该调用value方法以获取您应该添加的值。

除此之外,您还可以使用增强的for循环来使代码更清晰。

public static int addValues(ArrayList<? extends Alpha> arr, Gamma gam) 
{
    int sum = 0;
    for (Alpha alpha : arr) {
        try {
            sum += alpha.value(gam);
        } catch (ValueException e) {
        }
    }
    return sum;
}

答案 1 :(得分:1)

使用有界类型的通配符作为Alpha,因为您要访问该值,然后使用arr。

public static int addValues(ArrayList<? extends Alpha> arr, Gamma gam) 
{
    int sum = 0;
    for (Alpha alpha : arr) {
        try {
            sum += alpha.value(gam);
        } catch (Exception e) {
        }
    }
    return sum;
}

关于覆盖同等功能的第二个问题

public boolean equals(Gamma g) {
        if(g!= null && g instanceof Alpha && value(g) == value(this.myGam)){
            return true;
        }else{
            return false;
        }
    }