我正在尝试创建一个私有方法,如果为其他方法传递的任何值均为null,无论传递的参数类型如何,都将引发异常。因此,在构造函数中,您需要下面的代码:

public void add(int num) {
    exceptionCreator(num);
}

public void print(String something) {
    exceptionCreator(something);
}

public void gamePiece(customObject blah) {
    exceptionCreator(blah);
}

private void exceptionCreator([A type that works with all of them] sample) {
    if(sample == null) {
        throw new IllegalArgumentException();
    }
}


如何在不创建大量类似参数的情况下使其与不同类型配合使用?

最佳答案

int不是引用类型,因此不能是null。您的另外两个(StringcustomObject [应为CustomObject])是引用类型,因此它们可以是null

所有引用类型的基本类型都是Object,因此这就是exceptionCreator的基本要求。尽管使用int调用它会起作用(由于自动装箱),但它毫无意义,因为它永远不会抛出。

所以:

public void add(int num) {
    // Possible but pointless; it will never throw
    exceptionCreator(num);
}

public void print(String something) {
    exceptionCreator(something);
}

public void gamePiece(CustomObject blah) {
    exceptionCreator(blah);
}

private void exceptionCreator(Object sample) {
    if (sample == null) {
        throw new IllegalArgumentException();
    }
}

09-07 03:06