Java bean 是个什么概念?

保姆级教程:用U盘给浪潮服务器装系统(含RAID驱动加载技巧) 本文提供了一份详细的浪潮服务器U盘安装系统指南,重点介绍了RAID驱动加载技巧与实战步骤。从准备工作到系统安装全流程,涵盖RAID配置、驱动加载方法及常见问题排查,帮助用户高效完成服务器系统部署。特别强调RAID驱动与服务器型号的匹配性,确保安装过程顺利。 阅读详情


Java语言欠缺属性、事件、多重继承功能。所以,如果要在Java程序中实现一些面向对象编程的常见需求,只能手写大量胶水代码。Java Bean正是编写这套胶水代码的惯用模式或约定。这些约定包括getXxx、setXxx、isXxx、addXxxListener、XxxEvent等。遵守上述约定的类可以用于若干工具或库。

举个例子,假如有人要用Java实现一个单向链表类,可能会这样写:
// 编译成 java-int-list_1.0.jar
public final class JavaIntList {
  static class Node {
    public Node next;
    public int value;
  }
  public Node head;
  public int size;
}
上述实现为了能够快速获取链表的大小,把链表大小缓存在size变量中。用法如下:
JavaIntList myList = new JavaIntList();
System.out.println(myList.size);
JavaIntList的作者很满意,于是开源了java-int-list库的1.0版。文件名是java-int-list_1.0.jar。发布后,吸引了许多用户来使用java-int-list_1.0.jar。
有一天,作者决定要节省内存,不要缓存size变量了,把代码改成这样:
// 编译成 java-int-list_2.0.jar
public final class JavaIntList {
  static final class Node {
    public Node next;
    public int value;
  }
  public Node head;
  public int getSize() {
    Node n = head;
    int i = 0;
    while (n != null) {
      n = n.next;
      i++;
    }
    return i;
  }
}

然后发布了2.0版:java-int-list_2.0.jar。发布后,原有java-int-list_1.0.jar的用户纷纷升级版本到2.0。这些用户一升级,就发现自己的程序全部坏掉了,说是找不到什么size变量。于是这些用户就把作者暴打一顿,再也不敢用java-int-list库了。

这个故事告诉我们,如果不想被暴打致死,你就必须保持向后兼容性。太阳公司在设计Java语言时,也懂得这个道理。所以Java标准库中,绝对不会出现public int size这样的代码,而一定会一开始就写成:
private int size;
public int getSize() { return size; }

让用户一开始就使用getSize,以便有朝一日修改getSize实现时,不破坏向后兼容性。这种public int getSize() { return size; }的惯用手法,就是Java Bean。

现在是2014年,C#、Scala等比Java新的面向对象语言自身就提供了语言特性来实现这些常用需求,所以根本不需要Java Bean这样繁琐的约定。

比如,假如有个Scala版的ScalaIntList:
// 编译成 scala-int-list_1.0.jar
object ScalaIntList {
  final case class Node(next: Node, value: Int)
}
final class ScalaIntList {
  var head: ScalaIntList.Node = null
  var size: Int = 0
}
用户这样用:
val myList = new ScalaIntList
println(myList.size)
有一天你心血来潮改成这样:
// 编译成 scala-int-list_2.0.jar
object ScalaIntList {
  final case class Node(next: Node, value: Int)
}
final class ScalaIntList {
  var head: ScalaIntList.Node = null
  final def size: Int = {
    var n = head
    var i = 0
    while (n != null) {
      n = n.next
      i++
    }
    i
  }
}

用户还是照样能用,根本不破坏向后兼容性。所以Scala程序只要不考虑和Java交互,一般就不需要类似Java Bean这样的约定。

顺便说一句,向后兼容性分为源代码级和二进制级,Scala的var或val改为final def的话,无论源代码级的向后兼容性,还是二进制级的向后兼容性,都不遭受破坏。但C#的字段改为属性的话,虽然不破坏源代码级的向后兼容性,但是会破坏二进制级的向后兼容性。这是C#的设计缺陷,导致微软的编码规范不得不禁止使用公有字段。
在zcu102开发板上使用PetaLinux运行Qt程序 请注意,上述步骤只是一个概述,并且可能需要根据特定的开发环境和要求进行适当的调整。如果你是一个初学者或者对于这些领域不太熟悉,建议在尝试之前阅读相关的文档和教程,或者寻求专业人士的帮助。在"Projects"菜单中,选择"Build & Run"选项,并在"Build"步骤中选择正确的工具链。注意:如果Qt程序依赖于其他库文件,需要将这些库文件一起复制到PetaLinux工程的根文件系统目录中,并在Qt程序中正确地配置库文件路径。如果一切顺利,PetaLinux系统将启动,并自动运行Qt程序。 阅读详情

相关推荐

波士顿咨询最新发布《2025年全球支付报告:未来不稳定》:到2029 年,支付收入将预计达到 2.4 万亿美元

波士顿咨询最新发布《2025年全球支付报告:未来不稳定》:到2029 年,支付收入将预计达到 2.4 万亿美元

face light~ 917

Android~安卓开发中javaBean是推荐get/set还是声明public?

做过J2EE的同学开发中应该经常遇到javaBean这种习惯写法,安卓中也是经常看到这样类似重复的代码。那么我们有没有什么好办法可以避免这样重复代码搬运尼?javaBean是必须要实现get/set还是可以直接声明public就可以了? 其实我自己也很好奇到底哪种思想正确。于是问了下万能的百度,网上存在这么几种编程观点: 1. 几种观点 java编程思想:类的封装,安全性,只供外部get (读)...

Hynson的学习笔记 5542

计算机网络实验(华为eNSP模拟器)——第十章 Eth-Trunk(链路聚合)

目录一、Eth-Trunk的定义二、Eth-Trunk的工作模式(一)LACP模式1、定义2、命令(二)手工负载分担模式1、定义2、命令三、结语 一、Eth-Trunk的定义 Eth-Trunk是指设备的链路聚合,即将该设备的多个接口捆绑成一个接口,从而达到了增加带宽和提高可靠性的目的。我们要注意它是将多条物理链路,在逻辑上合并成一条,而不是串在一起。例我们将LSW1交换机S5700的三个端口(即GE0/0/1 、GE0/0/2、GE0/0/3)定义为一个Eth-Trunk接口与LSW2交换机相连,如下:

小宇y的博客 8419

JavaBean

JavaBean规范 JavaBean类是一个特殊的类 它必须满足以下条件, 1.属性私有 2.读写方法公有 3.必须要有无参构造器,而且只能有这一个构造器 JavaBean的历史 现在大多都是从web开发起步的,可能对swing不是很了解。java bean分四种,最早是用作swing的,作为一个控件,类似VB,可以直接拖放,他会定义一系列属性,方法,和事件

B_qxzb的专栏 1217

DeepLearningTool-深度学习分类-和HALCON的详细过程

损失函数:衡量预测误差,用于模型优化。混淆矩阵:评估分类模型性能,提供详细预测结果分析。两者结合使用,可以全面评估和优化模型。过拟合:模型过于复杂,捕捉了噪声,表现为训练集误差低,测试集误差高。欠拟合:模型过于简单,无法捕捉数据模式,表现为训练集和测试集误差都高。调整参数过拟合:简化模型、增加数据、使用正则化、早停、Dropout。欠拟合:增加模型复杂度、特征工程、增加训练时间、调整学习率、使用集成方法。通过合理调整参数和方法,可以有效避免过拟合和欠拟合,提升模型性能。

weixin_36672036的博客 6199

使用mid360运行lio-livox对比fast-lio2

msg_type为激光雷达发出的数据格式,有livox自定义数据类型格式CustomMsg和ros标准的PointCloud2格式,因此首先需要确定激光雷达端配置的是哪种格式。可以从激光雷达的ros驱动中看到驱动端有三种格式可以选,驱动端的数字2对应lio-livox中的1,驱动端的0对应lio-livox的格式0。如果使用的是Ubuntu18.04编译完成后运行直接成功,如果使用20.04运行会报错,需要修改以下源代码。针对livox-mid360 运行lio-livox的一些问题。

z1872385的博客 1231

实体类不需要写get、set方法的插件

pom里面添加依靠:<!--Lombok - 是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具, 通过使用对应的注解,可以在编译源码的时候生成对应的方法。简单试了以下这个工具还挺好玩的, 加上注解我们就不用手动写 getter\setter、构建方式类似的代码了。--> <dependency> <groupId>o...

然然酱的博客 1万+

硬件工程师笔记——电子器件汇总大全

本文系统总结了14种常用电子器件的工作原理及功能应用,包括电阻、压敏电阻、电容、电感、二极管、三极管、MOS管、晶振、光耦、IGBT、继电器、磁珠、可控硅和线性稳压器。每种器件从结构原理、工作特性到典型应用进行全面解析,如电阻的限流分压、电容的储能滤波、三极管的放大开关等。重点阐述了各器件在电路设计中的关键作用,如IGBT的功率控制、继电器的隔离保护、LDO的电压稳定等,并提供了实际电路应用案例。文章还整理了硬件工程师笔试面试相关的知识点和真题资源,为电子工程师提供全面的技术参考。

XU157303764的博客 2万+

实体类只写属性,不写get,set等之类的方法时,用注解@Data

如果实体类写完不想写get,set等等方法,只需要在实体类前加一个@Data注解,方法如下: 1.先确保有Lombok插件 2.pom文件中添加依赖 <!-- lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> 3.实体类前加注解@Data 可

qq_43279324的博客 2733

从零开始学 AUTOSAR:深入浅出 SAE J1939 诊断通信管理器(J1939Dcm)深度完整版

SAE J1939 是美国汽车工程师学会制定的重型车辆 CAN 总线通信标准,覆盖卡车、客车、工程机械、农机、船舶等,是商用车领域的 “通用语言”。基于CAN 2.0B 扩展帧(29 位 ID)(车规主流)PGN(参数组号)+ SPN(可疑参数号)核心标准:J1939-21:数据链路层(CAN 帧格式、地址声明)J1939-71:应用层(普通信号、报文)诊断层(核心!J1939Dcm 依据)J1939-81:网络管理(地址管理、节点检测)

getusushu的博客 119

uniapp 全局弹窗

功能详解1.有的组件需要全局调用,不想要在一个页面里面一个个引入,现在就需要写入到全局中,直接全局触发。2.通过 $rechargePop就能全局触发 充值的弹窗实现步骤一、先把组件封装好,如 rechargePop组件位置 components/RechargePop/index.vue ,就定义一个methods open方法就可以 二、在同级别路径下定义一个 index.js 三、引入到main.js 四、全局调用this.$rechargePop(); 就能弹出那个弹窗

weixin_42066070的博客 657

java get set写法_基于idea 的 Java中的get/set方法之优雅的写法

曾几何时,我们写代码的时候,每次写Bean的时候都会使用快捷键生成get/set方法,有时候我经常会想,既然每一个Bean我们都会给其提供get/set方法,那么为什么还有会这个东西哪?(当然这只是一个问题,毕竟还是很有用的,这一点就是Java语言中的private、public等作用域)今天说的当然不是这个,我们讨论的是希望有一种优雅的方式编写我们的get/set方法或者说是一种优雅的简化。那我...

weixin_28799111的博客 775

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java里的bean怎么用python的概念理解

java里的bean怎么用python的概念理解

addy_cloud的博客 926

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java中Class、Object和Spring中Bean、BeanFactory的基础概念

Java语言中,对象(Object)是类(Class)的实例。Bean是Spring提出的概念。 Java Java是面向对象语言。 类(Class) 类是对同一类事物的属性和行为的高度模拟。类可以解释为:种类,类别,类型。 在自然界中,物以类聚,比如鸟类、人类、汽车类、花草类等等。同一个事物从不同的维度又可以划分到不同的种类里,比如鸟类和人类都可以划分成动物类, 同一个种类还可以继续划分成跟细...

从前不爱吃面的大叔 933

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java bean 概念

Java bean 概念 JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 的属性。 举个例子,假如有人要用Java实现一个单

Perfect is shit 514

Spring学习笔记06——bean、java bean、spring bean、POJO几个概念讲解

Bean这个词的具体含义需要根据上下文来区分,它可能指Java Bean(标准Java规范)或(Spring框架中的概念)。POJO是普通 Java 对象,强调简单性。Java Bean是标准化 POJO,强调规范与兼容性。Java Bean一定是POJO,但POJO不一定是Java Bean,Java Bean的规范更严格,POJO 更自由,例如Java Bean有Getter/Setter,并且必须有无参构造器,而POJO不必须。

weixin_42844704的博客 1494

java bean由哪三部分组成_好程序员Java学习路线Java bean是个什么概念

原标题:好程序员Java学习路线Java bean是个什么概念好程序员Java培训分享Java bean是个什么概念,Bean的中文含义是“豆子”,顾名思义JavaBean是一段Java小程序。JavaBean实际上是指一种特殊的Java类,它通常用来实现一些比较常用的简单功能,并可以很容易的被重用或者是插入其他应用程序中去。所有遵循一定编程原则的Java类都可以被称作JavaBean。 一. J...

weixin_35196629的博客 447

【java】Java bean 是个什么概念?

Java bean 是一种规范: Java Bean是基于社区共识形成的一套精确的规范。设计的原则之一是高内聚低耦合,不懂就别提其他的 1、所有属性为private 2、提供默认构造方法 3、提供getter和setter 4、实现serializable接口 ---------------------------------------------------------------...

我的笔记本 2202

java bean状态_Java bean 是个什么概念?

Bean的中文含义是“豆子”,顾名思义JavaBean是一段Java小程序。JavaBean实际上是指一种特殊的Java类,它通常用来实现一些比较常用的简单功能,并可以很容易的被重用或者是插入其他应用程序中去。所有遵循一定编程原则的Java类都可以被称作JavaBean。一. Java Bean技术概述Java Bean是基于Java的组件模型,由属性、方法和事件3部分组成。在该模型中,JavaB...

weixin_32493541的博客 418

Java bean概念

Java语言欠缺属性、事件、多重继承功能。所以,如果要在Java程序中实现一些面向对象编程的常见需求,只能手写大量胶水代码。Java Bean正是编写这套胶水代码的惯用模式或约定。这些约定包括getXxx、setXxx、isXxx、addXxxListener、XxxEvent等。遵守上述约定的类可以用于若干工具或库。// 编译成 java-int-list_1.0.jar public final

huali_1995的博客 887
上一篇: Eclipse中关于JRE System Library、Web App Libraries的疑惑
下一篇: Eclipse常用快捷键
xosg
xosg 领域专家: 网络协议与安全技术领域 领域专家: 网络协议与安全技术领域
博客等级 码龄9年 1987粉丝 864原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值