简体   繁体   English

在Java中将泛型范围实现为函数参数的最佳方法是什么?

[英]What is the best way to implement a generic range as a function argument in Java?

I have a function that needs a range as an argument. 我有一个需要范围作为参数的函数。 The domain is [0-100] and it includes 0 and 100. The range argument could for example be: 域为[0-100],它包括0和100.范围参数可以是例如:

[1-8, 18, 20-88, 90-92]

or 要么

[1, 10-30]

Ranges do not overlap. 范围不重叠。 I am interested in the mechanism - how best to pass a range argument? 我对机制感兴趣 - 如何最好地传递范围参数? Array? 阵列? or use variable argument? 或使用变量参数?

Use a list of Range objects: 使用Range对象列表:

class Range
{
    int low;
    int high;

    Range(int low, int high)
    {
        this.low = low;
        this.high = high;
    }
}

List<Range> rangeArray = new ArrayList<Range>();

then assign ranges like this: 然后分配这样的范围:

rangeArray.add(new Range(1,8));
rangeArray.add(new Range(18,18));
rangeArray.add(new Range(20,88));
rangeArray.add(new Range(90,92));

Have a static method r() that creates a range in some representation 有一个静态方法r() ,它在某种表示中创建一个范围

func( r(1,8), r(18), r(20,88), r(90,92) )

Or use method chaining to create a list of ranges 或使用方法链接创建范围列表

func( Range.r(1,8).r(18).r(20,88).r(90,92) )

Or, as my joke comment 或者,正如我的笑话评论

func(1,-8, 18, 20,-88, 90,-92)

Or, use 100*x+y to represent (x,y) 或者,使用100*x+y来表示(x,y)

func( 1_08, 18, 20_88, 90_92 );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM