首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于 java set,get方法,而为什么推荐直接使用public

我不知道有没有人遇到过,有一段时间,我都觉得那些 set,get用处何在,我直接写一个public直接拿不就行了,多爽,但是随着使用频繁,越来越想去搜索一下这个问题,而不是按照官方推荐,前辈们使用都是建议...这里引入其中一句话: 在任何相互关系,具有关系所涉及各方都遵守边界是十分重要事情,当创建一个类库时,就建立了与客户端程序员之间关系,他们同样也是程序员,但是他们是使用类库来构建应用...如果所有的类成员对任何人都是可用,那么客户端程序员就可以对类做任何事情,而不受约束。即使你希望客户端程序员不要直接操作你某些成员,但是如果没有任何访问控制,将无法阻止此事发生。...综上所述,写到这里,我诞生了一个想法,其实set ,get ,public,对于它们使用完全取决于我们程序员自己,为了让项目之间逻辑更加清晰,有些标准自上而下,慢慢传了下来,无论你使用那种,但是有一个东西是无法避免...补充说明,set字面意思设置,get获取,我们了解一下java面向对象编程封闭性与安全性,private 修饰set get方法将方法封闭在了一个特定类,其他类就无法对其变量进行方法,这样就提高了数据安全性

1.4K20

Kotlin基础学习之Deprecated与Suppress注解使用

前言 在 Java 通常对一些方法进行一些注解操作,但是很多注解在 Java 代码上没有问题,如果切换到 Kotlin 上时,如果继续使用这些注解就会存在一些问题,本篇主要对比一些常用 Java 注解和...message 信息,正常写法是这样: @Deprecated("xxx") fun testKt(){ } 三个参数说明: message:解释并建议使用替代 API 信息 level:指定如何在代码中报告元素用法...,不会中断其编译或运行时使用 ERROR:禁止使用该 API,如果调用了这类API直接编译报错 HIDDEN:直接隐藏该 API replaceWith:指定可用于替换函数,属性或类代码片段。...replace SuppressWarnings 与 Suppress 在 Java 代码,如果需要消除一些编译时警告,通常使用 @SuppressWarnings(“xxx”) 来进行解决,而在...Kotlin ,不能使用这个注解,需要使用Kotlin内置 @Suppress(“xxx”) 带替代。

1.5K51
您找到你想要的搜索结果了吗?
是的
没有找到

springbootjar为何能独立运行

再次秀出我蹩脚英文翻译: 使用-jar参数时,后面的参数是的jar文件名(本例是springbootstarterdemo-0.0.1-SNAPSHOT.jar); 该jar文件包含是class...是前面的springboot工程构建结果,是个压缩包,常见压缩工具就能解压,我这里环境是MacBook Pro,unzip即可解压; 解压后有很多内容,我们先关注manifest相关,下图红框中就是...,这是我们java代码唯一类,也只真正应用启动类; 所以问题就来了:理论上看,执行java -jar命令时JarLauncher类会被执行,但实际上是SpringbootstarterdemoApplication...猜测 动手之前先猜一下,个人觉得原因应该如下: java -jar命令会启动JarLauncher; Start-Class是给JarLauncher; JarLauncher根据Start-Class...如果您不想自己搭建kubernetes环境,推荐使用腾讯云容器服务TKE:无需自建,即可在腾讯云上使用稳定, 安全,高效,灵活扩展 Kubernetes 容器平台; 如果您希望自己镜像可以通过外网上传和下载

72230

Java 程序员必须掌握 5 个注解!

deprecation:表示使用方法、类、类型等警告(参见《JLS》9.6.4.6章节和下面的@Deprecated部分)。...在某些紧急情况下,建议使用代码可能会被删除,应该在未来框架或库版本从其代码库删除代码之前立即转换为替换代码。...为了支持推荐使用代码文档,Java包含@Deprecated注解,它会将一些构造函数、域、局部变量、方法、软件包、模块、参数或类型标记为。...使用和声明都在同一个最外面的类(即,如果类调用其本身方法)。 用在import声明,该声明导入通常不赞成使用类型或构件(即,在将类导入另一个类时)。...正如前面所说,在某些情况下,当推荐使用元素将被删除,则调用代码应立即删除推荐使用元素(称为terminally deprecated code)。

74720

JAVA】Dozer 介绍及快速入门教程

Dozer 是 Java Bean 到 Java Bean 映射器,他以递归方式将数据从一个对象复制到另一个对象。...Dozer Dozer 依赖第三方 jar 包 ---- 入门 创建两个 Java Bean 类: public class User { private String name; private...注意: 两个 Java Bean 类都是需要 get 和 set 方法,上述省略代表不需要,不然是无法进行映射; 如果运行时报了这个异常:java.lang.NoClassDefFoundError...String username; private String age; public String dateOfBirth; // 省略 setter 和 getter 方法...,Dozer 已经停更了,所以本文也只是简单介绍了一下,因为项目用到了,就简单记录一下; Dozer 项目当前不再维护了,并且将来很大可能被,然后新用户建议使用了,老用户也推荐大家迁移到

72430

探秘Java:从main函数启动开始

从main函数开始 一、前言   不知道在座各位朋友是否跟我一样,初学Java时写下第一段代码就是类似下面这段代码: public static void main(String[] args...,JVM在启动过程中会根据指定 MainClass 即初始类去获取该类 main 方法,同时这里也明确了main方法必须是静态、公有的且参数列表为 String 数组。..."([Ljava/lang/String;)V");   这里参数列表写法就是编译后二进制.class文件写法,有兴趣同学可以通过idea自带查看二进制文件工具自行查看一下。   ...Java程序执行方式   在日常开发过程,除了上面直接运行一个java文件,我们大部分情况都是将Java程序打包成一个jar包进行运行,这里从源码也能得窥一二。...= 0) { // 如果使用jar方式运行,则从对应jar获取mainClass mainClassName = GetMainClassName(env, jarfile

1.3K30

【侠客行】Lombok深度解析

大致意思是Lombok通过增加一些“处理程序”,可以让java变得简洁、快速。 2 Lombok使用方法 Lombok能以简单注解形式来简化java代码,提高开发人员开发效率。...编译时解析 编译时解析有两种机制,分别简单描述下: 1) Annotation Processing Tool apt自JDK5产生,JDK7标记为过期,推荐使用,JDK8彻底删除,自JDK6开始...在使用javac过程,它产生作用具体流程如下: javac对源代码进行分析,生成了一棵抽象语法树(AST) 运行过程调用实现了“JSR 269 API”Lombok程序 此时Lombok就对第一步骤得到...知乎上有位大神发表过对Lombok一些看法: 这是一种低级趣味插件,建议使用JAVA发展到今天,各种插件层出穷,如何甄别各种插件优劣?...虽然非常建议在属性getter/setter写一些业务代码,但在多年项目的实战,有时通过给getter/setter加一点点业务代码,能极大简化某些业务场景代码。

57630

安卓7.1精简版下载_asm字节码

大家好,又见面了,我是你们朋友全栈君。 ASM是一个久经考验框架,包括Spring在内多个框架都使用ASM作为字节码工具。...7.1 更新如下 用于Java 13新常量Opcodes.V13 asm.Type小优化 检查CheckMethodAdapter.visitLocalVariable签名 重构单元测试使用Arrange-Act-Assert...模式 ClassReader.b ASMifiable和Textifiable(替换为ASMifierSupport和TextifierSupport) 推荐使用不合适*将适配器类重新映射到新...asm-deprecated.jar 删除asm.util.Printer buf和appendString(之前) bug修复 317863:对于方法本地Java类,InnerClasses属性重新映射逻辑是错误...317866:扩展帧导致七个以上维度基本数组类型不正确 317868:带有括号类名称Frame.getAbstractTypeFromDescriptor上IllegalArgumentException

1.3K20

Lombok使用与原理

Lombok简介 首先 Lombok是一款Java IDE应用工具插件,一个可以通过简单注解形式来帮助我们简化消除一些必须有但显得很臃肿Java代码工具,比如属性构造器、getter、setter...2.2 添加jar包 在项目中添加lombokjar包,笔者是maven,所以在pom文件添加了如下依赖。gradle使用见官网。...@Getter / @Setter 上面已经说过,一般@data就不用额外加这个注解了。...Annotation Processing Tool,apt自JDK5产生,JDK7标记为过期,推荐使用,JDK8彻底删除,自JDK6开始,可以使用Pluggable Annotation Processing...当然,lombok不支持多种参数构造器重载,工具毕竟是工具,我感觉并不会有非常完美适合每个人工具。最后,我个人还是很推荐这款插件,毕竟我很懒,?。

77080

Lombok介绍和使用

简而言之:Lombok能以简单注解形式来简化java代码,提高开发人员开发效率。...示例 举个例子看看lombok和不用区别 创建一个用户类 不使用Lombok: public class User implements Serializable { private static...private static final Logger log = LoggerFactory.getLogger(UserController.class); Lombok工作原理 在Lombok使用过程...编译时解析 编译时解析有两种机制,分别简单描述下: 1)Annotation Processing Tool apt自JDK5产生,JDK7标记为过期,推荐使用,JDK8彻底删除,自JDK6开始...在使用javac过程,它产生作用具体流程如下: javac对源代码进行分析,生成了一棵抽象语法树(AST) 。 运行过程调用实现了“JSR 269 API”Lombok程序 。

78720

Lombok介绍、使用方法和总结

大致意思是Lombok通过增加一些“处理程序”,可以让java变得简洁、快速。 2 Lombok使用方法 Lombok能以简单注解形式来简化java代码,提高开发人员开发效率。...出现神奇就是在源码没有getter和setter方法,但是在编译生成字节码文件中有getter和setter方法。这样就省去了手动重建这些代码麻烦,使代码看起来更简洁些。...编译时解析 编译时解析有两种机制,分别简单描述下: 1)Annotation Processing Tool apt自JDK5产生,JDK7标记为过期,推荐使用,JDK8彻底删除,自JDK6开始...知乎上有位大神发表过对Lombok一些看法: 这是一种低级趣味插件,建议使用JAVA发展到今天,各种插件层出穷,如何甄别各种插件优劣?...虽然非常建议在属性getter/setter写一些业务代码,但在多年项目的实战,有时通过给getter/setter加一点点业务代码,能极大简化某些业务场景代码。

1.4K71

别再乱用了,Java 21 将、删除这些功能!

尽管Java 是我使用向后兼容程度最高语言和环境之一,但始终存在功能甚至删除可能性。Java 21 将两个功能,这就是我们今天要讨论内容。 1为什么要用功能?...代码或功能意味着鼓励使用它,并且可能在未来版本不再存在。为什么鼓励它可能有很多原因。 最常见原因是: 它已被更好替代方案所取代。 存在设计缺陷,甚至使用起来可能存在危险。...底层平台这种缺失功能通常是未来和删除有力指标。 尽管如此,您仍然可以编写和使用线程代码,但在实际操作却缺少预期好处。...,但尚未删除 正如您所看到用是有道理,因为 Windows 32 位 x86 无论如何都无法运行。此外,针对特定平台进行构建仍然是可能,只是目前鼓励这样做。...所以很自然地,我们是否应该使用 API 问题就出现了。 在我看来,如果可能的话,我们应该尽量避免使用 API。随着时间推移,它正在成为技术债务,最终必须偿还。

55710

springbootjar为何能独立运行

再次秀出我蹩脚英文翻译: 使用-jar参数时,后面的参数是的jar文件名(本例是springbootstarterdemo-0.0.1-SNAPSHOT.jar); 该jar文件包含是class...SNAPSHOT.jar是前面的springboot工程构建结果,是个压缩包,常见压缩工具就能解压,我这里环境是MacBook Pro,unzip即可解压; 解压后有很多内容,我们先关注manifest...,这是我们java代码唯一类,也只真正应用启动类; 所以问题就来了:理论上看,执行java -jar命令时JarLauncher类会被执行,但实际上是SpringbootstarterdemoApplication...猜测 动手之前先猜一下,个人觉得原因应该如下: java -jar命令会启动JarLauncher; Start-Class是给JarLauncher; JarLauncher根据Start-Class...,使用该参数是为了生成带有多个layer信息镜像 // 这里暂时不关注jarmode String jarMode = System.getProperty("jarmode"); //如果没有

39130
领券