这可能听起来很愚蠢,但为什么我需要在我的@Entitys中定义一个空构造函数?
我看到的每个教程都说:每个实体都需要一个空的构造函数.
但Java总是给你一个默认的不可见的空构造函数(如果你不重新定义一个).
谢谢.
我认为存在语义问题.我对"需要"所理解的是写作.
含义:始终在实体中编写一个空构造函数.
例:
@Entity
public class MyEntity implements Serializable {
@Id
private String str;
public MyEntity(){}
//here getter and setter
}
Run Code Online (Sandbox Code Playgroud)
但是当你不重新定义它时,Java总是给你这个空的构造函数(用参数写另一个).
在这种情况下,编写这个空构造函数似乎没用.
我遇到一个问题,询问"关于"默认"构造函数,以下哪一项是正确的?"
和一个选项"它初始化类的实例成员." 是不正确的选择.
现在我的理解是,如果我们有一个代码,如
Class Test {
String name;
}
Run Code Online (Sandbox Code Playgroud)
然后编译器创建看起来像的默认构造函数
Class Test {
String name;
Test(){
super();
name = null;
}
}
Run Code Online (Sandbox Code Playgroud)
是不是默认构造函数初始化实例成员name = null?
我一直在自学Java.我理解定义类的范围,但仍然没有得到空构造函数用法的概念.
通常我们应该传递构造函数的参数来构建实例对象.但是,我经常看到构造函数的空参数.例如:
class Person {
String name;
int age;
public Person();
public Person(String name, int age){
this.name = name;
this.age = age;
}
}
Run Code Online (Sandbox Code Playgroud)
我研究并阅读了一个使用"鱼"类来解释的例子.所以,这就是我到目前为止所理解的:在定义类时,我们首先定义一个对象的属性,然后我们创建一个构造函数,用于使用方法构建对象.空构造函数构建GENERIC对象,以及带参数的构造函数构建具有更多特定信息的对象.让我们说上面的例子,如果我使用空构造函数创建一个实例对象:
Person p1 = new Person();
Run Code Online (Sandbox Code Playgroud)
- 它仍会创建一个对象,但没有任何属性?那么,究竟空构造函数用于什么?我在很多示例代码中看到了它.它非常有用/常见吗?
感谢您的回答!
我最近正在阅读一些Java并且遇到了一些新的东西(一个成语?)对我来说是新的:在程序中,具有多个构造函数的类也总是包含一个空白构造函数.例如:
public class Genotype {
private boolean bits[];
private int rating;
private int length;
private Random random;
public Genotype() { // <= THIS is the bandit, this one right here
random = new Random();
}
/* creates a Random genetoype */
public Genotype(int length, Random r) {
random = r;
this.length = length;
bits = new boolean[length];
for(int i=0;i<length;i++) {
bits[i] =random.nextBoolean();
}
}
/* copy constructor */
public Genotype(Genotype g,Random r) {
random = r;
bits = new boolean[g.length]; …Run Code Online (Sandbox Code Playgroud) 假设我有一个POJO类用户和一个constuctor public User(int id, String name){...}.但是当我实例化User对象时就像User u=new User()没有参数一样,Eclipse会给出错误,如构造函数User()未定义.但是当我没有参数化的构造函数时,它工作正常.有人可以解释为什么它需要定义默认构造函数?