java中使用new关键字创建对象的时候,构造方法上的修饰符起什么作用?
1,限定可以创建对象的位置
使用public 修饰,new对象时,可以在任何包下的任何类中。
使用protected修饰,只能在当前类,或者同一包下创建对象。
使用private修饰,只能在当前类中创建对象。
2,使用不同修饰符修饰构造函数有啥作用?
public修饰,不限定对象啥时候在什么地方创建。
protected修饰,限制对象创建范围到同一个包下,当需要外部去创建对象,但是又不想所有使用的地方都能创建。可以使用protected修饰构造方法
private修饰,只能本类创建对象,进一步缩小对象能创建的地方,如果外部需要使用类对象时,提供一个返回当前类对象的接口【必须是public,且 static 修饰】,设计模式之单例模式就是构造函数私有化。
对于类的设计者来说,如果想要类对象的创建由自己把控,可以使用private构造函数,或者 protected 构造函数。
下面的错误是我构造一个工厂类时候报的错误,百度了一圈发现网上也有类似的错误都是构造工厂类时候报出,但是错误不相同,最后还是静下心来看看报错的错误,从上往下看,一不小心看到如下错误:
Caused by: java.lang.IllegalArgumentException: No visible constructors in classcom.liulangtao.frame.demo.config.elasticSearch.ElasticSesrchClientFactory
翻译过来就是java.lang.IllegalArgumentException引起错误,没有ElasticSesrchClientFactory的构造函数。这样小编瞬间就理解了果断将ElasticSesrchClientFactory的构造函数的private修改为public ,重启服务瞬间好了。
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-11-22 11:38:22.267 ERROR 3404 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'elasticSesrchClientFactory' defined in file
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_43842093/article/details/121644684
内容来源于网络,如有侵权,请联系作者删除!