因此,在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不希望让我在一个可能不一致的状态下拥有一个构造对象......但是,在做一个模拟时,我并不关心它.看来我应该能够做到这一点......或者至少我知道上面的情况对我来说是安全的......或者好像它应该是反正的.
我正在覆盖我在测试类中使用的任何方法,因此我没有使用未初始化变量的风险.
我认为它不能,因为标记接口原则是没有任何方法,但由于默认方法不是抽象的我不确定.
我需要生成一个唯一的long值,所以我决定使用UUID:
UUID.randomUUID().getLeastSignificantBits();
Run Code Online (Sandbox Code Playgroud)
我注意到一件奇怪的事情就是UUID.randomUUID().getLeastSignificantBits()
总是返回负值.我很迷惑.我错过了什么吗?
我是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) 目前,我正在使用此代码拆分字符串:
string[] split = source.Split(new char[] { ' ' });
所以"快速/小褐色/狐狸"将是:
The
quick
/little
brown/
fox
我想要的是这个:
The
quick
/little brown/
fox
我已经看到了一些解决方案(我并不真正了解它们),但它们都进入了var
我想要进入的解决方案string[]
.