Tag: 构造函数

为什么我们不能在JAVA中实例化一个抽象类?

我明白: 由于抽象类本身没有任何东西,即车辆,这就是为什么我们要创建一个具体实现的对象,如汽车,自行车等。 在对象链接期间调用Abstract类的构造函数。 我们永远不能直接创建Abstract类的对象,即使它包含一个Constructor并且所有方法都已实现 为什么? 我希望从编译器的角度理解为什么Java会强制这些? 谢谢

具有所有类属性的构造函数或带有setter的默认构造函数?

以下是两种方法: 具有所有类属性的构造函数 优点:我必须输入一定数量的参数类型,所以如果我发出错误,编译器会警告我(顺便说一下,有没有办法防止错误地在参数列表上切换两个Integer的问题?) 缺点:如果我有很多属性,实例化行可能变得非常长,并且可能跨越两行或更多行 setter和默认的空构造函数 优点:我可以清楚地看到我正在设置的内容,所以如果我做错了什么我可以在输入时立即查明它(我无法在切换两个相同类型的变量时出现先前错误) 缺点:具有大量属性的对象的实例化可能需要几行(不知道这是否真的是一个con),如果我忘记设置属性,编译器就不会说任何内容。 你会做什么以及为什么? 你知道任何光模式(考虑到应该在每次实例化7个以上的属性时使用它)吗? 我问这个是因为我倾向于不喜欢大型构造函数,我无法快速找出我正在寻找的变量的位置,另一方面我发现“set all properties”容易遗漏一些属性。 请随意在优点和缺点中论证我的假设,因为它们只是我的想法:) 更新 – 我发现的一个与此相关的问题: 构建大的,不可变的对象,而不使用具有长参数列表的构造函数

构造函数在Java中返回什么?

在关于这个话题的post后,我发现自己有点困惑。 所以我再次问这个问题: “Java构造函数是否返回任何值?” 我的书说他们不能回报价值,但我的教授说他们可以而且他们总是这样做。 由于控件需要转移给某些有价值的人无效?

我真的需要在java中定义默认构造函数吗?

它在未定义构造函数时工作正常,但如果我定义参数化构造函数而不是默认构造函数并且在创建对象时未传递任何值,则会出错。 我认为构造函数是预定义的。 如果我已经定义了参数化构造函数,为什么还需要定义默认构造函数? 是不是预定义的默认构造函数?

如何将参数注入TestNG类的构造函数?

我已经实现了一个带有策略模式的程序。 所以我有一个在某些地方使用的接口,可以替换具体的实现。 现在我想测试这个程序。 我想以类似的方式做到这一点。 编写一次测试,测试接口。 应在测试开始时注入具体的接口实现,以便我可以轻松替换它。 我的testclass看起来类似于这个: public class MyTestClass { private StrategeyInterface strategy; public MyTestClass(StrategeyInterface strategy) { this.strategy = strategy; } ….test methods using the strategy. } 参数化的构造函数必须用于在测试开始时注入具体的策略实现。 现在我没有让TestNG运行它并注入具体的实现实例。 我尝试了几种inheritance方式, @DataProvider , @DataProvider和相应的方法,但没有运气。 以下是testNG报告所说的内容: Can’t invoke public void MyClass.myTestMethod(): either make it static or add a no-args constructor to your class 我使用maven surefire插件来运行测试。 这是pom.xml的相关部分: […]

Java中构造函数中的多个可选参数 – 构造函数的指数

这是我遇到过几次,但还没有找到令人满意的答案。 这看起来很愚蠢,但谷歌搜索了一段时间后,我无法想出一些好的东西。 假设我有一个包含20个实例变量的类,每个变量都是可选的(将被初始化或不被初始化)。 现在我希望我的构造函数处理所有的情况,如果有一些实例变量它很好我可以创建具有不同签名的构造函数,但是这里我有20个,所以我需要2 ^ 20 = 1,048,576个构造函数处理所有案件! 那似乎……不是最优,你不同意吗? 因此,由于采用这种powershell方法,我基本上必须构造2 ^ n个构造函数,其中n是实例变量的数量,我想找到更好的方法来实现它。 我已经看到了这个问题的几个解决方案,但我相信它们都是关于数据的假设,但在我的情况下,这些变量中的每一个都可以初始化或不是随机的,我在初始化之前无法知道。 我正在寻找一些我可以应用的设计模式或想法,以使我的代码更加可维护(不用担心我没有创建1M +构造函数:) 谢谢。

“构造函数不可见”错误

我有两节课: 首先,使用一个构造函数: public class First { First (ObjectA myObjectA) { //do stuff } } 第二,有两个构造函数: public class Second { Second (ObjectB myObjectB) { //do something… } Second (ObjectC myObjectC) { //do something else… } } 当我想实例化我的First类时,Eclipse会生成一个错误(“构造函数不可见”),我必须将public添加到First的构造函数中: First first = new First(myObject); //Error : “The constructor is not visble” 但是当我实例化我的Second课时,我没有错误: Second second = new Second(myObjectC); //No […]

递归构造函数调用

public class LecturerInfo extends StaffInfo { private float salary; public LecturerInfo() { this(); this.Name = null; this.Address = null; this.salary=(float) 0.0; } public LecturerInfo(String nama, String alamat, float gaji) { super(nama, alamat); Name = nama; Address = alamat; salary = gaji; } @Override public void displayInfo() { System.out.println(“Name :” +Name); System.out.println(“Address :” +Address); System.out.println(“Salary :” […]

intentservice没有空构造函数,但是有一个构造函数

我在Activity中有一个IntentService,当我尝试调用该服务时,它会抛出此错误,我发现这很奇怪,因为如果我声明了空构造函数。 错误: 06-17 15:48:34.603: E/AndroidRuntime(13363): FATAL EXCEPTION: main 06-17 15:48:34.603: E/AndroidRuntime(13363): java.lang.RuntimeException: Unable to instantiate service cl.prosys.rac.activity.HomeActivity$UploadService: java.lang.InstantiationException: can’t instantiate class cl.prosys.rac.activity.HomeActivity$UploadService; no empty constructor 06-17 15:48:34.603: E/AndroidRuntime(13363): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2380) 06-17 15:48:34.603: E/AndroidRuntime(13363): at android.app.ActivityThread.access$1700(ActivityThread.java:134) 06-17 15:48:34.603: E/AndroidRuntime(13363): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1306) 06-17 15:48:34.603: E/AndroidRuntime(13363): at android.os.Handler.dispatchMessage(Handler.java:99) 06-17 15:48:34.603: E/AndroidRuntime(13363): at android.os.Looper.loop(Looper.java:137) 06-17 15:48:34.603: E/AndroidRuntime(13363): at android.app.ActivityThread.main(ActivityThread.java:4867) […]

如何从枚举构造函数中抛出exception?

如何从枚举构造函数中抛出exception? 例如: public enum RLoader { INSTANCE; private RLoader() throws IOException { …. } } 产生错误 未处理的exception类型IOException