首页编程java编程什么是java的只读属性吗?比较好的Java学习课程有哪些

什么是java的只读属性吗?比较好的Java学习课程有哪些

编程之家2023-10-1293次浏览

大家好,今天来为大家解答什么是java的只读属性吗这个问题的一些问题点,包括比较好的Java学习课程有哪些也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

什么是java的只读属性吗?比较好的Java学习课程有哪些

比较好的Java学习课程有哪些

首先是Java技能的核心和基础JavaSE,这一阶段会接触到Java基础语法、面向对象编程思维、Java常用API、多线程并发编程、数据结构/集合结构、IO/网络编程/反射/设计模式。这一阶段往往也是最重要的,后边许多知识和结构的使用都是根据这一基础来的。学完这一部分,做一些简略的桌面使用程序设计没有问题。

接下来Java的进阶课程中,要用到的便是数据库(MySQL)和JDBC。在之后,要学习到的是JavaWeb开发技能。学完可以具有开发个人网站和企业网站的知识技能。

最后,接下来便是Java课程最重要的部分把学到的Java技术知识应用到实战项目了,一般实战项目会占整个课程的少半时间,从浅入深,会接触到大小型企业内各种真实实战项目。比方内容办理体系(CMS)、智能商贸体系、盛行结构使用、B2C/商城项目等。完结这些项目,你对市面上大多数web使用开发、办理体系开发、运用前沿技能开发都得心应手。

什么是java的只读属性吗?比较好的Java学习课程有哪些

java学习路线图:

什么叫程序的互操作性

应用程序互操作性:互用性基本原理

发布者:[本站编辑]来源:[]浏览:[]评论:[]字体:大中小

什么是java的只读属性吗?比较好的Java学习课程有哪些

面对互用性的挑战

在最基本的层次上,实现应用程序平台之间的互用性要涉及到数据的交换。当实现一个.NET和 J2EE互用性项目时,面临三种主要的数据交换挑战。这三个挑战如下:

•原始数据类型映射。

•不存在的数据类型

•复杂数据类型

注原始数据类型是基于.NET或 Java的基本类型系统的组件,例如:整型、字符串、双精度等。

所有的挑战都涉及到类型兼容性,并有可能阻碍或阻止数据传输。

这三个挑战分解如下:

•原始数据类型映射钬_您可能知道“String”类型在 CLR和 Java中都存在。然而,这并不意味着 Java中的 java.lang.String完全映射为.NET中的 System.String。如果示例公开 java.lang.String,您如何将之映射为 CLR中的相当成分?

•不存在的数据类型钬_如何映射一个平台上有而另一个平台上没有的数据类型?例如,System.Collections.Specialized.HybridDictionary是一个在 CLR中被证实存在的数据类型,但在 Java中却没有相似的数据类型。 Java中存在类似情况,例如 Java.util.Vector,它在.NET中没有相似的数据类型。

•复杂数据类型钬_您的应用程序可能公开复杂数据类型,由数量众多的原始数据类型或者嵌套的原始数据类型组成。此时需要公开复杂数据类型以便其他平台可以使用它。

考虑如图 3.1所示的集成一个 ASP.NET表示层和一个 J2EE业务层的示例。在此示例中,J2EE业务层中的一个 EJB公开了一个 ASP.NET表示层随后调用的方法。在一个生产应用程序中,该返回数据不可能是简单的“Hello World”字符串,它可能包含复杂元素。

图 3.1: ASP.NET表示层连接到 J2EE业务层

幸运的是,已经存在许多方法可使应用程序在不同平台之间交换不同类型的数据,并且第 4章和第 5章将详细地描述这些选择。然而,在能够在两个平台间建立连接之前,您必须在它们试图进行交换之前确保双方理解特定的数据类型,除此之外也有一个使双方都可以使用的传递数据的方法。下一部分讲述如何使用序列化实现该传递。

使用序列化

序列化是使一个对象或类编码成为永久的或可传输状态的过程。这使您接受一个复杂数据类型,然后编码、保存、传递和解码,并可能使用一个单独的进程处理解码。

有两个主要的序列化类型:

•二进制序列化钬_接受数据类型并且将其转换为二进制流。

• XML序列化钬_将数据类型转换为可以随后转换为 XML文档的 XML流。

可以从任一种序列化类型中接受输出,并将其存储在内存中、放在文件中,还可以通过网络连接进行传输。例如,您的应用程序可能有一个已经定义的复杂数据类型 CustomerData,它存储着有关客户的信息(如姓名、地址、电话号码等)。可以使用序列化将 CustomerData数据类型转换为一个二进制或 XML流,这样您可以跨越进程边界进行传输或者将它保存为一个文件稍候使用。当该对象存在于二进制或 XML格式中时,就已经被序列化了。

反序列化是一个将已经序列化的对象转换回它原始形式的过程。通常,将对象反序列化为它们的原始类型。因此,如果将 CustomerData数据类型序列化为一个二进制流或一个 XML文档,能够将其反序列化回数据类型 CustomerData而不能反序列化为数据类型 OrderData。OrderData.

.NET和 J2EE在同一平台内应用程序间的数据交换都使用序列化。通过将序列化对象传递给其他平台以进行反序列化,还可以使用序列化在不同平台上的应用程序间交换数据。以下部分考查如何在.NET和 Java上实现二进制和 XML序列化。

理解二进制序列化

二进制序列化是接受一种复杂数据类型(或对象),并将其编码为一个二进制流、更改为永久状态、传输然后解码(反序列化)回原始复杂数据类型的过程。

Java和.NET两者都包含一个能将任何可序列化的数据类型转换为一个字节流的二进制序列化程序。各个平台上执行该序列化的类是相似的,并且实现起来很简单。

对.NET和 Java两者的二进制序列化而言,首先必须使用一个标签以指示要序列化一个类型。在.NET中,可以使用 [Serializable]属性或实现 ISerializable接口。.在 Java中,同样的方法是使用类实现 java.io.serializable。

不幸的是,.NET和 Java的序列化程序不兼容。因此,无法将由 Java序列化程序序列化的 CustomerData对象直接流式传输到.NET版本中去,反之亦然。即使可以这样做,还是要面对如下挑战:让.NET框架应用程序理解 Java序列化程序产生的 CustomerData对象。.NET一方可能没有一个等同的 CustomerData数据类型来接受来自 Java方的 CustomerData反序列化对象。

只要使用同样的格式化程序执行对象的序列化和反序列化,就可以使用二进制序列化程序连接.NET到 Java。创建来自数据类型的字节流格式,必须与接收字节流并且重新构造对象的格式完全匹配。

有两种可以用来避免默认的 J2EE和.NET二进制序列化程序不兼容的方法。它们是:

•创建一个在 Java和.NET中共享相同格式选项的自定义序列化程序。

•在.NET框架中使用一个处理二进制格式化程序的第三方产品,如 JaNET或 JNBridgePro。

有关使用 JaNET和 JNBridgePro实现二进制序列化的更多信息,请参阅第 4章“互用性技术:点对点。”

理解 XML序列化

XML序列化是接受一个复杂数据类型(或对象)并将其解码为 XML流的过程。然后,可以将 XML流转变为一个 XML文档形式的持久化状态,进行传输,再将其解码(反序列化)回其原始复杂数据类型(或对象)。

为了理解 XML序列化过程,必须对 XML有一个基本的了解。 XML是一个基于文本的包含结构化的和可扩展数据的文档标记语言。因为 XML是基于文本的,所以可以像一个正常的文本一样读它;并且因为它是可扩展的,所以可以使用它描述几乎所有的信息类型。因此 XML文档可以包括:

•文本

•图片

•程序设置

•数据架构

•批注

•插入

XML文档也可以包括关于如何使用文档自身中的数据的指导。

有关 XML的更多信息,请参阅 Microsoft XML Web site。

在“理解二进制序列化”一节中,您可以看到.NET和 Java平台的二进制序列化程序是如何互相不兼容的。然而,XML是与平台无关的。.如果在一个平台中可以将一个对象或数据类型序列化为 XML文档,应该很容易读取、理解和反序列化该文档为另一个平台的对象或数据类型。不幸的是,并非总是如此,但在大多数情况下 XML序列化的确提供了一个互用性通道。

分析 XML文档

在.NET和 J2EE内,有几种不同的方法可以读、写和编辑 XML文档。该过程就是 XML分析,并且两个平台都具有稳定成熟的 XML分析器。使用分析器,您可以在人工地从一个 XML文档中读取数据的应用程序内编写代码,然后将数据插入到一个复杂数据类型对象。例如,可以使用分析从 J2EE应用程序产生的 XML文档中读取数据,然后将数据插入到.NET数据类型。分析允许在.NET和 J2EE之间交换数据。

读写 XML文档的分析器通常主要分三种类型:

•双方平台上的文档对象模型(DOM)

•仅在 Java上的用于 XML的简单 API(SAX)

•仅在.NET上的 Pull model分析

DOM XML分析器将整个文档加载到内存,这具有一些优点,也有一些缺点。整个文档位于内存中,可以简单快速地遍历 XML层,但大量的文档会因为内存的消耗而影响性能和响应。

SAX只根据需要读取 XML文件的一部分。由于是按需要读文件,则对性能的影响较小,但由于阻止向后分析而降低了灵活性。

Pull model分析使用一个只进、只读的 XmlReader游标。XMLReader提供快速、无缓存的流去访问输入数据,允许提取数据和忽略不感兴趣的记录。因为 XmlReader处于 pull model,必要时应用程序可从读取器中提取节点。 Pull model提供了一些便利,如状态管理、多输入流、避免额外的字符串复制以及有选择性地处理。有关使用 XmlReader的更多信息,请参阅 MSDN上的“Reading XML with the XmlReader”。

System.Xml命名空间提供 XmlDocument和 XmlElement两个类使您能够在.NET中分析 XML。还提供一些方法,能够在 XML文档内添加和修改元素并且遍历那些文档。

在 Java中,可以使用 Document和 Element类达成相似的结果。

XML分析的局限性

您需要了解一些 XML分析的局限性。当从一个 XML文档访问和读取不同的数据元素时,分析工作进行正常。然而,对文档本身操作信息可能很快就会变得很困难。而且,分析器没有内部方法可用于将 XML文档中的对象映射为 Java或.NET中的类。将 XML文档中的数据映射为应用程序的对象和类中需要将 XML序列化。

XML分析被认为是一种实现 XML序列化的低效方法,并且不建议使用此方法作为在.NET和 Java间交换 XML数据的方法。.NET和 J2EE都具有包含分析功能的 XML序列化程序。

当创建 XML文档时,XML序列化提供显著的改进。它使您脱离沉闷的 XML分析过程,关注开发应用程序本身和相关数据类型。 XML序列化将.NET中的对象收集任务简化,将其转换为 XML文档并且可以让一个 Java应用程序去读取,反之亦然。

在.NET平台上实现 XML序列化

.NET框架为 XML序列化提供大量的类和 API。其中一个主要的类就是 System.Xml.Serialization.XmlSerializer类。该类将.NET框架类型序列化为 XML文档,并且可将 XML文档序列化回来。 XML序列化只将一个对象的公共字段和属性转换(或序列化)为一个 XML流,但是二进制序列化将对象的公共和私有字段连同类名以及包括该类的程序集转换为字节流。

可以使用 [Serializable]属性指明要序列化的类型,如同二进制序列化一样。还可以使用该数据类型类实现 ISerializable接口。

XML序列化使用与二进制序列化不同的规则。例如,不必使用 [Serializable]属性标明.NET数据类型,尽管这仍是建议的做法。然而,.NET数据类型必须有一个有效的默认公共构造函数。

将.NET对象序列化为 XML

以下示例说明在.NET下如何使用 XMLSerializer将一个 CustomerData类的实例(称为 custData)转换为一个 XML流。该示例假设.NET框架应用程序已经具有一个被定义为 CustomerData的标记为可序列化的数据类型类。

XmlSerializer serializer= new XmlSerializer(typeof(CustomerData));

serializer.Serialize(fileStream, custData);

XMLSerializer类的 Serialize方法序列化CustomerData对象的内容 custData,并且产生一个文件流输出。该流指向一个文件,该文件是一个 XML文档,它代表 CustomerData对象的序列化版本 custData。

将 XML中的对象反序列化到.NET中去

下一个示例说明如何使用.NET中的 XMLSerializer从一个存储为文件的 XML文档返回 CustomerData对象的实例 custData。

XmlSerializer serializer= new XmlSerializer(typeof(CustomerData));

CustomerData custData=

(CustomerData)serializer.Deserialize(fileStream);

此处使用类 XmlSerializer的方法 Deserialize从一个作为流传递到序列化程序中的 XML文档返回一个 CustomerData对象 custData。

注Deserialize方法返回一个具有 System.Object类型的对象。在将返回对象分配给目标类型前确保对返回的对象进行了适当的强制转换。

序列化可能因为某些原因而失败:

•反序列化的 XML文档包括序列化程序无法处理的字段。

•对象无法序列化,如实现 IDictionary接口的任何对象。

•对象未被声明为公共。

•对象不包括一个有效的无参数构造函数。

注在试图序列化一个满足上面讲的四种类别之一的对象时,从 XmlSerializer.中生成一个 System.InvalidOperationException。当调试 XML序列化时,应该检查并且处理任何满足这种异常的实例。

为 Java平台实现 XML序列化

无论对 J2SE还是 J2EE而言,对象的 XML序列化都不是核心规范的一部分。因此,需要使用一个第三方序列化程序,几个选择如下:

• Electric XML

• Apache Cocoon

• Open XML Framework(OXF)

• Java Architecture for XML Binding(JAXB)

尽管无需使用 Web服务来使用 XML序列化特性,许多序列化程序仍旧构成了较大的 Web服务软件包的一部分。 Java序列化程序结合使用反射和映射将对象数据写为正确的 XML格式。反射是一种检查对象结构的技术,而映射类似于一个可扩展样式表语言转换(XSLT)文档,将对象中的字段名映射为 XML文档的元素或属性。

使一个 Java类可序列化,需要实现 Serializable接口。因此 CustomerData的类声明如下。

public class CustomerData implements java.io.Serializable

可序列化的类也必须具有一个无参数构造函数。还可以使用 serialPersistentFields成员去显式声明哪些字段可被序列化,或者使用瞬态关键字指出无法序列化的字段。不可序列化字段的示例可能是包含敏感数据的字段。

为了控制保存和读信息,在 Java中标记为序列化的类还可实现 readObject和 writeObject方法,以及 writeReplace和 readResove方法以指定替换对象。

为对类的序列化进行完全控制,还可实现 Externalizable而不是 Serializable。当使用 Externalizable时,必须实现 writeExternal和 readExternal方法写数据内容以及数据格式和相关的元数据。

接下来两个使用 Electric XML的示例说明如何序列化和反序列化一个 Java对象。此处您可以看到 Electric XML对.NET使用相似的方式处理序列化和反序列化过程。

将 Java对象序列化为 XML

下面的示例假设 Java应用程序定义一个可序列化的数据类型类 OrderData,该数据类型类实现了 java.io.serializable。它说明了在 J2EE中如何使用 Electric XML序列化程序将该类的命名实例 order转换为一个 XML文档。

electric.xml.io.IWriter writer= new LiteralWriter(xmlNameSpace,OrderData);

writer.writeObject(order);

electric.xml.Document document= writer.getDocument();

在该示例中,首先创建了类型 electric.xml.io.IWriter的一个实例,将要创建的 XML文档的 XML命名空间和对象类型(OrderData)作为参数传入。 IWriter对象的 writeObject方法序列化 OrderData对象的内容 order。最后,对象 IWriter的方法 getDocument返回包含对象 OrderData的已序列化内容的 XML文档。随后可以将该文档写入到流。

从 XML反序列化对象到 Java

下一个示例说明在 J2EE中如何使用 Electric XML序列化程序从名为 xmlDocument的 XML文档中返回 OrderData对象的一个实例 order。

electric.xml.io.IReader reader= new LiteralReader(xmlDocument);OrderData order=(OrderData)reader.readObject(OrderData.class);

这里使用 IReader类的 readObject方法从作为参数传到读取器的 XML文档中返回 OrderData对象的一个实例 order。

注readObject方法返回类型 java.lang.Object的一般对象。在给目标类型分配返回对象之前,必须对此返回对象进行适当的强制转换。

有关 Java平台上的 XML序列化的其他示例,请参阅第 7章“在表示层集成.NET”。

使用 XML架构确保类型兼容性

您现在已经了解了在一个平台上如何使用 XML序列化将一个对象序列化为一个 XML格式,然后在另一个环境中将其反序列化为原来的对象类型。然而,仅 XML序列化还不能解决.NET和 Java间交换数据的问题。

当使用序列化技术时主要考虑的问题是确保在从一个平台产生一个 XML文档时,这个文档与另一个平台兼容。不应想当然地认为一定兼容。 XML架构提供了为 XML文档指定格式的互用性协定。正是该组件为成功进行.NET和 Java互联提供了模板。

XML文档本身没有在这个文档内定义数据类型。因此值 4.56可能是 string、double或者 float。这使接收平台很难正确导入该值。类似地,这两个平台都可以实现类型 OrderData,而.NET版本的类型与 Java中的同名类型完全没有关系。

例如,如果在.NET平台上将 OrderData对象序列化为一个 XML文档,并且将其传入要使用的 Java应用程序中,需要回答以下问题:

• Java应用程序怎样知道如何对 OrderData对象进行反序列化?

•在 Java中有一个数据类型 OrderData等同于.NET中的数据类型 OrderData吗?

• Java中的数据类型 OrderData与.NET中的数据类型 OrderData若不存在相同点又会怎样?

这些问题都指向为使.NET与 Java间可以交换数据而需要解决的数据类型兼容性问题。

理解 XML架构文档

XML架构通过定义 XML文档格式,凭借帮助在.NET和 J2EE间交换数据的 XML架构文档(XSD)提供了一个连接框架。一个 XSD文件指定一个 XML架构,并且 XSD文件本身就是另一个具有固定结构的 XML文档。 XSD内的节点和元素定义相关的 XML文档中的元素和数据类型。. XSD也包含 XML文档中的每个元素的任何约束。

在 XSD文件内,您可以指定以 XML格式存储的数据类型的定义。例如,当在 XSD中定义数据类型 OrderData时,可以指定这个对象中字段的名称和个数,如 orderID、itemDescription和 price。也可以指定对象 OrderData中的 price字段的值(4.56)的类型是 double。

XSD使您可以定义 XML命名空间。 XML命名空间允许声明唯一类型并且也允许标识可能有相同名称的不同数据类型。

XSD中的一个必需组件是公共命名空间。这使您可以声明元素(如 xs:complexType)在文档中是唯一的。有关 XSD命名空间的更多信息,请参阅 the W3Consortium Web site。

Visual Studio.NET包括一个 XML设计器工具,使您可容易地设计 XML架构。 XML设计器使您可在架构的图形表示和表示 XML架构的 XSD文档间切换模式。 XML设计器创建了独立于平台的 XSD,它符合 W3C标准。.有关 Visual Studio.NET生成架构的更多信息,请参阅 Visual Studio.NET帮助。

IBM Websphere Studio Application Developer 5.0也包括一个使您可轻松地设计 XML架构的工具。 XSD设计器使您能够在正在设计的架构的图形表示和表示 XML架构的实际 XSD文档间切换模式。在 IBM WebSphere Studio Application Designer中设计的 XSD也是与平台无关的,并且符合 W3C组织的 XSD标准。

使用 XSD确保类的兼容性

前一节讲述了如何在一个 XSD中实现一个 XML架构以定义一个 XML文档的格式。您可以使用该知识解决最后的数据交换的难题。

事实是.NET和 Java平台在数据类型上达成一致的可能性很小。然而,利用 XSD这两个平台可以在 XML文档格式上统一。如果说互用性如同国际外交,XSD将是走向世界和平的一个主要的里程碑。

.NET和 Java都具有允许将一个类映射为已经定义的 XML架构的工具,反之亦然。当映射一个类到一个 XML架构时,通过序列化该类的实例而生成的 XML文档与 XSD定义的 XML格式相匹配。通过将每个平台的类映射为公共 XML架构,可以确保这些平台间能够交换 XML数据。

例如,在.NET和 Java平台上将类 CustomerData映射为一个公共 XML架构文件 CustomerData.xsd。然后,将能够将 Java类 CustomerData的实例序列化为一个 XML文档,然后将它反序列化为一个.NET类 CustomerData的实例。

使用 Java和.NET中的 XML架构映射工具,主要有两种设计交换数据的公共格式的方法:

•从一个公共的 XML架构开始,然后在两个平台上产生数据类型类。该方法确保建立与平台无关的数据类型和架构。

•从一个现有的数据类型类(从任意的平台)开始,由它生成一个 XML架构,然后根据生成的 XML架构产生另一个平台的相应数据类型类。

注如果该类在两个平台上都不存在,第一个技术是最好的。如果它们在一个或另一个平台上确实存在,则必须使用第二种方法。

对两个方法中的任意一个,技术不同点在于工作在 Java还是.NET平台。

在.NET中映射 XSD和类

.NET框架提供一个 XML架构定义工具 Xsd.exe,可以用来映射.NET类到 XML架构并且再将其映射回来。使用该工具,您可以:

•从一个 XSD生成一个.NET类。

•从一个.NET类生成一个 XSD。

例如,如果为一个名为 ProductsData的数据类型定义一个 XML架构文档 ProductsData.xsd,可以使用 Xsd.exe产生一个名为 ProductsData的可序列化的.NET类。序列化一个.NET ProductData类实例产生与一个定义在 XML架构文档内的 XML格式相匹配的 XML文档。

如果在.NET中定义一个可序列化的类 ProductsData,还可以使用 Xsd.exe生成一个 XML架构 ProductsData.xsd,它定义了包含 ProductsData对象的一个可序列化版本的 XML文档的格式。

注Xsd.exe仅允许您遵循 WWW联盟的 XML架构定义语言的实施标准对 XML架构进行操作。

有关 XML架构定义工具的更多信息,请参阅 MSDN上的 XML Schema Definition Tool。

有关如何使用 XML架构定义工具的其他示例,请参阅 Simon Guest撰写的 Microsoft.NET and J2EE Interoperability Toolkit一书的第 3章。

在 Java中映射 XSD和类

在 Java平台上,可使用多个工具将 Java类映射为 XML架构,反之亦然。示例如下:

• Electric XML的 schema2java和 java2schema

• Java Architecture for XML Binding(JAXB)

注大多数 XML序列化工具的供应商提供相当于 schema2java和 java2schema的实用工具。然而,本书中的示例使用 Electric XML版本。

schema2java和 java2schema工具提供的功能与.NET上的 Xsd.exe非常相似。使用 Electric XML工具可以:

•使用 schema2java生成一个来自 XSD的 Java类。

•使用 java2schema生成来自 Java类的 XSD。

可以使用带有同一 XML架构文件 ProductsData.xsd的 schema2java工具(ProductsData.xsd是在.NET示例中为名为 ProductsData的数据类型定义的)生成一个名为 ProductsData的可序列化 Java类。

java2schema工具允许执行相反的过程。如果在 Java中定义一个名为 ProductsData的可序列化类,可以使用 java2schema生成一个 XML架构 ProductsData.xsd。该文档定义包括 Java ProductsData对象的序列化版本的 XML文档格式。

注只能从已编译的类产生 XSD,而不是从源代码产生。

有关 schema2java和 java2schema的更多信息,请参阅本章结束部分的参考部分中包含的 electric.xml io tool软件包。

有关如何使用 Electric XML工具映射 Java类和 XML架构的示例,请参阅 Microsoft.NET and J2EE Interoperability Toolkit的第 3章 70至 80页。

在前面章节的.NET和 Java示例中,因为 Java类 ProductsData和.NET类 ProductsData都来源于 ProductsData.xsd,所以两个类都被序列化为同一 XML格式。因此可以将某个平台的 ProductsData类实例序列化为一个 XML文档,然后将其反序列化为另一个平台的 ProductsData类的一个实例。

使用 XSD生成类型是非常有效的,它对提供跨平台的互用性大有帮助。 XSD也是 WSDL中的一个基础元素。当在 XML Web服务中查看数据类型转换时,理解 XSD结构非常有益。

映射 XSD类型

前面的部分描述了如何在.NET和 Java中映射类和 XSD。但是,当使用该技术创建交换数据的一个公共格式时,具有一些限制性。在大多数情况下,您使用的在.NET和 Java中存储数据的复杂数据类型由原始类型组成。不幸的是,不是所有的原始类型在.NET和 Java之间都有一个直接的映射。

XSD公共命名空间定义了

C# 中可以用方法代替属性吗

可以像java那样使用setMethod和getMethod方法而不用属性,但是C#提倡使用属性是因为属性在c#上有很大的优势。而其在控件绑定上也是靠属性来匹配的如果不使用的话,在控件绑定上可能会出错误。属性是一种变形的方法。但是C#里提倡以这种特殊的格式来书写,学的C#就最好这样写方法也一样可以实现但效率低。

关于什么是java的只读属性吗,比较好的Java学习课程有哪些的介绍到此结束,希望对大家有所帮助。

什么是java中的元注解?java中常用注解分别是什么及汉语意思!java中oa代表什么意思?oa是什么意思