Java 对字段具有不同的访问级别:
公共
受保护
默认
私有
由于封装的概念,我们总是尝试使用<code>private</code>修饰符,以及所需访问级别的getter和setter。这个答案显示了它的各种优点。既然getter和setter很酷,我们应该在什么时候选择<code>public/protected/default对象字段
到<代码>私有对象字段
澄清:我完全理解为什么以及什么是getter、setter和access修饰符。我只想对上面的某个问题做出全面的回答。
我们可以通过使类私有
的成员在java
中实现完全封装,并且只能通过getters
和setters
在类之外访问它们。虽然可以通过使成员public
或protected
来实现较小程度的封装。
请问我们在使用类型注释的时候,何时使用type class名,何时使用class名呢? 我经过如下实验: 比如以上,是否是返回类型为class名称的时候,使用 typeof class名,返回类对象的时候,使用class名?
那么当我使用调用异步方法时会发生什么呢?整个方法的操作会以同步的方式完成吗?例如,如上面所示,我在中有三个异步操作;、&,那么它们是否会以同步方式执行,因为我使用.wait()调用ScanAsync方法?
问题内容: 我很好奇,为什么是方法的公开? 此方法从调用它的位置替换原始堆栈跟踪,从而删除了定位异常所需的信息。它可以用于混淆,但无需付出太多努力,因为新的堆栈跟踪将直接指向混淆代码。更好的方法是简单地隐藏异常或抛出新异常。 但是我找不到在现存的上调用此方法的 合理 理由。所以问题是:为什么这种方法是公开的?后面有什么意义吗? 问题答案: 原因之一是性能。抛出和捕获异常很便宜;昂贵的部分是填充堆栈
我有一个具有线程池的主类,许多其他类使用它来对数据库执行操作。我目前有一个getter方法来获取池,它工作正常,但似乎有点笨拙。 在什么情况下使用公共字段代替getter/setter方法是可以接受的?
问题内容: 我需要创建一个使用12个参数的存储过程,并使用此参数的不同组合来过滤查询。所有12个参数都不是强制性的,好像我传递3或5或12个参数取决于用户输入的搜索输入。 我可以使用动态SQL查询或“ Case where”语句创建2种方法。这些查询的示例如下: 动态查询 DECLARE @condition VARCHAR(MAX)=’‘ Declare @var1 varchar(10) De
在vertx中构建的大多数web应用程序中,我看到人们在一个微服务中创建了两个垂直条。 一个是rest verpt来处理HTTP请求。 另一种是将刀顶点通信到数据库。 无论何时有任何api请求,HTTP verticle都会通过事件总线与dao verticle通信。 但鉴于顶点是单线程的,在这里创建两个不同的垂直线有什么好处呢。在事件总线上会有不必要的通信开销,而我只能创建一个处理rest和I/