小编aaa*_*aaa的帖子

为什么我不能在我的super()调用周围使用try块?

因此,在Java中,构造函数的第一行HAS是对super的调用...是隐式调用super(),还是显式调用另一个构造函数.我想知道的是,为什么我不能试一试?

我的具体情况是我有一个测试的模拟类.没有默认的构造函数,但我想让一个更容易阅读的测试.我还想将从构造函数抛出的异常包装到RuntimeException中.

所以,我想要做的就是这样做:

public class MyClassMock extends MyClass {
    public MyClassMock() {
        try {
            super(0);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    // Mocked methods
}
Run Code Online (Sandbox Code Playgroud)

但Java抱怨说super不是第一个声明.

我的解决方法:

public class MyClassMock extends MyClass {
    public static MyClassMock construct() {
        try {
            return new MyClassMock();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public MyClassMock() throws Exception {
        super(0);
    }

    // Mocked methods
}
Run Code Online (Sandbox Code Playgroud)

这是最好的解决方法吗?为什么Java不允许我做前者?


我对"为什么"的最好猜测是Java不希望让我在一个可能不一致的状态下拥有一个构造对象......但是,在做一个模拟时,我并不关心它.看来我应该能够做到这一点......或者至少我知道上面的情况对我来说是安全的......或者好像它应该是反正的.

我正在覆盖我在测试类中使用的任何方法,因此我没有使用未初始化变量的风险.

java exception mocking try-catch

39
推荐指数
3
解决办法
8211
查看次数

可串行标记接口是否包含默认方法?

我认为它不能,因为标记接口原则是没有任何方法,但由于默认方法不是抽象的我不确定.

java interface marker-interfaces java-8 default-method

10
推荐指数
4
解决办法
1168
查看次数

UUID.randomUUID().getLeastSignificantBits()总是返回负值?

我需要生成一个唯一的long值,所以我决定使用UUID:

UUID.randomUUID().getLeastSignificantBits();
Run Code Online (Sandbox Code Playgroud)

我注意到一件奇怪的事情就是UUID.randomUUID().getLeastSignificantBits()总是返回负值.我很迷惑.我错过了什么吗?

java uuid

7
推荐指数
1
解决办法
1694
查看次数

getMax方法获取更大的数字

我是Java的小伙子,我遇到了问题.

所以作业是这样的

有一种方法是必需的:getMax,它接受两个整数变量作为输入,返回>两者中较大的一个.您的主要方法必须如下所示(注释除外).

main( String[] args)
{   
     int num1, num2;
     num1 = Integer.parseInt(args[0]);
     num2 = Integer.parseInt(args[1]);
     System.out.println(“the bigger value of the two is : “ + getMax(num1, num2));
}
Run Code Online (Sandbox Code Playgroud)

你的程序可能会像:

java Assign5 23 67

两者中较大的价值是67

经过一番努力,这是我写的小程序.

import java.util.Scanner;

//use getMax to takes two numbers and returns bigger of the two

public class assignment5 {
        private static void getMax(int a, int b ){
            Scanner kevin = new Scanner(System.in);

        System.out.println("Enter First Number:");
        a = kevin.nextInt();
        System.out.println("Enter Second Number:");
        b = kevin.nextInt();

    getMax(a, …
Run Code Online (Sandbox Code Playgroud)

java

2
推荐指数
1
解决办法
3万
查看次数

不要在特定字符之间拆分

目前,我正在使用此代码拆分字符串:

string[] split = source.Split(new char[] { ' ' });

所以"快速/小褐色/狐狸"将是: The quick /little brown/ fox

我想要的是这个: The quick /little brown/ fox

我已经看到了一些解决方案(我并不真正了解它们),但它们都进入了var我想要进入的解决方案string[].

c# string split character

0
推荐指数
1
解决办法
127
查看次数