Java构造方法的调用方式有哪些
在Java中,构造方法是一种特殊的方法,用于初始化对象,构造方法的名称与类名相同,没有返回值类型(即使是void也不需要写),可以有参数,构造方法的主要作用是完成对象的初始化工作,本文将介绍Java构造方法的调用方式。
1、无参构造方法的调用
当创建一个对象时,如果没有提供任何参数,系统会自动调用无参构造方法。
public class Person { private String name; private int age; // 无参构造方法 public Person() { this.name = "未知"; this.age = 0; } } public class Main { public static void main(String[] args) { // 创建Person对象,自动调用无参构造方法 Person person = new Person(); } }
2、有参构造方法的调用
当创建一个对象时,如果提供了参数,系统会调用与参数匹配的有参构造方法。
public class Person { private String name; private int age; // 有参构造方法 public Person(String name, int age) { this.name = name; this.age = age; } } public class Main { public static void main(String[] args) { // 创建Person对象,调用有参构造方法 Person person = new Person("张三", 25); } }
3、通过this关键字调用其他构造方法
在一个类中,可以定义多个构造方法,当一个构造方法中需要调用另一个构造方法时,可以使用this关键字。
public class Person { private String name; private int age; private String gender; // 无参构造方法 public Person() { this("未知", 0, "未知"); } // 有参构造方法1 public Person(String name, int age) { this(name, age, "未知"); } // 有参构造方法2 public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } }
4、通过反射机制调用构造方法
Java反射机制允许在运行时访问类的元数据,包括构造方法,通过反射机制,可以在运行时动态地创建对象并调用构造方法。
import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; import org.apache.commons.lang3.ClassUtils; import org.apache.commons.lang3.reflect.ConstructorUtils; import org.apache.commons.lang3.reflect.MethodUtils; import org.springframework.core.DefaultParameterNameDiscoverer; import org.springframework.core.ParameterNameDiscoverer; import org.springframework.core.ResolvableType; import org.springframework.core.io.Resource; import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; import org.springframework.util.ClassUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util
原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/154328.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复