加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java泛型并将数字加在一起

发布时间:2020-12-15 07:37:33 所属栏目:Java 来源:网络整理
导读:我想在 java中一般添加数字.我遇到了困难,因为Numbers类并不真正支持我想做的事情.到目前为止我尝试过的是: public class SummerE extends Number { public E sumValue(ListE objectsToSum) { E total = (E) new Object(); for (E number : objectsToSum){
我想在 java中一般添加数字.我遇到了困难,因为Numbers类并不真正支持我想做的事情.到目前为止我尝试过的是:

public class Summer<E extends Number> {


    public E sumValue(List<E> objectsToSum) {
        E total = (E) new Object();
        for (E number : objectsToSum){
            total += number;
        }
        return null;

    }

显然这不起作用.我该如何纠正这段代码,以便给出一个< int>列表.或者< long>或者其他什么并归还总和?

解决方法

为了一般地计算总和,您需要提供两个动作:

>一种总计零项的方法
>一种总结两个项目的方法

在Java中,您可以通过界面完成.这是一个完整的例子:

import java.util.*;

interface adder<T extends Number> {
    T zero(); // Adding zero items
    T add(T lhs,T rhs); // Adding two items
}

class CalcSum<T extends Number> {
    // This is your method; it takes an adder now
    public T sumValue(List<T> list,adder<T> adder) {
        T total = adder.zero();
        for (T n : list){
            total = adder.add(total,n);
        }
        return total;
    }
}

public class sum {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(4);
        list.add(8);
        CalcSum<Integer> calc = new CalcSum<Integer>();
        // This is how you supply an implementation for integers
        // through an anonymous implementation of an interface:
        Integer total = calc.sumValue(list,new adder<Integer>() {
            public Integer add(Integer a,Integer b) {
                return a+b;
            }
            public Integer zero() {
                return 0;
            }
        });
        System.out.println(total);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读