Java如何创建对象问题

新手求助。
Java中创建对象,一般是new 类名();来搞定。

 如果有人问我,可不可以不用构造函数来创建对象?
 我回答:可以,比如说正则表达式中的Pattern类,没有构造函数,需要使用其方法
 compile(String regex) 来将给定的正则表达式编译到模式中。返回了一个Pattern类的对象。如此便创建了对象。
 请大神给点意见,这样可以吗?或者说说不使用构造函数如何创建对象。
 多谢指点。

java对象的创建是必须要构造函数的
1.为了对创建对象的控制,构造方法不对外部类开放,这时候就会出现用方法来获取对象,典型应用,单例模式
2.用反射创建对象,也是默认调用无参构造方法,用Class的newInstance方法获得,这时候你也看不到new,但是虚拟机
也是要调用构造方法,才能为对象分配空间。
3.常用的就是用new直接实例化对象。

一定要看其本质,对象的实例化是离不开构造方法的,虽然有时候我们看不到显示的创建。

如果对你有帮助,希望采纳。

 其实还是要调用构造函数的。只是封装起来了,你看不到而已。
好比
class A { }
void main()
{
    A a = new A();
}
你也可以写
class A { }
A getA()
{
return new A(); // 在这里还是用的new
}
void main()
{
    A a = getA(); //好像不要调用new了,其实只是封装到getA了。
}

可以不用构造函数,就能创建对象,在我的记忆中是不行的。

除了反序列化能得到以外,其他想不到了

不可以, 只能通过new操作或者反射创建对象,但是new操作本质还是先调用构造函数的。这是Java运行的底层机制,即对象初始化本质是调用构造函数的。

给你补充一点,运用Objenesis可以绕过构造方法进行实例化,它的内部实现你可以慢慢研究,
这个主要是为了解决反射实例化对象找不到无参构造导致异常的问题