在以下这篇文章中,已经定义了三个注解:@Programmer、@ConstructorNote和@Common: 《Java面向对象编程》导读-用内置注解来限定自定义注解 接下来就可以在其他类中使用这三个注解。例程1的Person类就利用它们对类、构造方法、成员变量、成员方法和参数做注解。 例程1 Person.java @Programmer(name="Jack",company="PowerNode") publicclassPerson{ @Common(type=String.class,description="姓名") privateStringname; @Co...

大家对类和接口的声明语法都非常熟悉,例如: publicclassMyClass{……}//声明类 publicinterfaceMyIFC{……}//声明接口 注解也属于一种Java类型,用@interface标记声明。例如以下代码定义了一个名为MyAnnotation的注解: public@interfaceMyAnnotation{} 为了把注解类型和其他Java类型区分开发,在引用注解时以@开头,例如以上代码定义了@MyAnnotation注解。当@MyAnnotation注解的类体为空“{}”,不包含任何成员,这样的注解称为标识型注解。 此外,注解的类体中也可以定义一些成员...

Java软件应用之间进行协作,最常见的方式是调用接口的方法。而注解为Java软件应用之间的协作提供了另外一种便利途径。如果把宠物狗和主人比作两个软件系统,那么安装在狗身上的定位器就类似于注解。主人无法直接让狗汇报自己所处的位置,但是主人可以通过读取定位器的信息来了解狗的行踪。 安装在宠物狗身上的定位器就像源程序中的注解 同样,如果软件应用A希望从软件应用B中获取与程序代码相关的元数据,软件应用B就可以用注解来指定这些元数据。 大力:“这些注解一般由软件应用A定义,还是软件应用B定义?”卫琴:“由软件应用A来定义。”大力:“注解有点像软件应用A派到软件应用B中的负责里应外合的卧底。”卫琴:...

在定义Java注解时,还可以使用JDK类库的一些内置注解来进行相关的限定。这些内置注解主要包括@Target、@Rentention、@Documented和@Inherited。下面以定义@MyAnnotation注解为例,分别介绍这些内置注解的用法。 1.@Target注解 @Target注解用来指定@MyAnnotation注解所适用的目标,即@MyAnnotation注解可以为源代码中的哪些内容做注解。 @Target注解有一个用于设定目标的value成员,其可选值由java.lang.annotation.ElementType类的静态常量来表示,表1列出了这些常量表示的目标。 ...

大力:“在遍历集合时,如果通过foreach语句进行遍历,每次都仅仅处理一个元素。如要一次处理大批量数据,该如何操作?” 卫琴:“可以调用集合的支持批量操作的方法。” 批量筛选数据 在Collection接口中定义了以下方法: (1)booleanretainAll(Collection<?>c) 修改当前集合,在当前集合中保留那些同时位于参数c集合中的元素,删除其余的元素。如果当前集合最终做了改动,就返回true。 (2)booleanremoveAll(Collection<?>c) 删除当前集合中的那些同时位于参数c集合中的元素。 (3)booleanaddAl...

  3YcfDaxdRWte   2023年11月02日   25   0   0 SystemListSystemList表视图表视图

本文结合具体的范例,介绍如何在JavaWeb应用中对客户请求进行异步处理,在Servlet中进行文件上传。 本文所涉及的源代码的下载网址为: http://www.javathinker.net/javaweb/upload-app.rar 在ServletAPI3.0版本之前,Servlet容器针对每个HTTP请求都会分配一个工作线程。即对于每一次HTTP请求,Servlet容器都会从主线程池中取出一个空闲的工作线程,由该线程从头到尾负责处理请求。如果在响应某个HTTP请求的过程中涉及到进行I/O操作、访问数据库,或其他耗时的操作,那么该工作线程会被长时间占用,只有当工作线程完成了对当前HT...

大多数应用程序都需要访问数据库。据统计,在一个应用中,通过JDBC访问数据库的代码会占到30%左右。访问数据库的效率是决定程序的运行性能的关键因素之一。提高程序访问数据库的效率的总的原则是:减少建立数据库连接的次数,减少向数据库提交的SQL语句的数目,及时释放无用的Connection、Statement和ResultSet对象。下面总结了用于优化访问数据库代码的一些细节。 1.选择合适的JDBC驱动器 一般说来,应该优先考虑使用第3类和第4类驱动器,它们具有更高的运行性能,只有当这两类驱动器不存在的情况下,才考虑用第1类和第2类驱动器作为替代品。 2.优化数据库连接 采用连接池来重用有限的...

对于大型Java项目,由一个程序员单枪匹马来开发是不现实的,通常是由Java开发团队共同开发。假定大力创建的Employee类会被翠花创建的PowerApp类访问。翠花如何了解Employee类的用法呢?一种办法是翠花直接阅读大力创建的Employee类的源代码。这种办法尽管也是可行的,但比较费力。更为通用和便捷的做法是阅读Employee类的JavaDoc文档。 Java类通过JavaDoc文档来对外说明自身的用法。JavaDoc文档是基于HTML格式的帮助文档。例如图1是JDK的Java基本包中的Object类的JavaDoc文档,该文档描述了Object类以及它的各个方法的功能、用法和注...

  3YcfDaxdRWte   2023年11月02日   14   0   0 javadJavaHTMLJavajavadhtml

本文涉及以下参考资料 (1)ApacheFTPClientJAR的下载地址: http://www.apache.org/dist/commons/net/binaries/ (2)ApacheFTPClientAPI的JavaDoc文档: http://commons.apache.org/proper/commons-net/apidocs/ (3)本文参考孙卫琴老师所写的《Java网络编程核心技术详解》,电子工业出版社出版。 以下范例先登录到FTP服务器,然后再创建目录,然后再上传文件。 publicbooleanupLoadFile(Filefile,Stringpath,St...

  3YcfDaxdRWte   2023年11月02日   20   0   0 apacheApache文件名文件名

HibernateAPI和JPAAPI中主要接口之间有一些对应关系,例如: JPAAPI----------------------HibernateAPI EntityManagerFactory----SessionFactory EntityManager---------------Session EntityTransaction------------Transaction SessionFactory接口在JPAAPI中的对等接口是javax.persistence.EntityManagerFactory;Session接口在JPAAPI中的对等接口是javax.persist...

  3YcfDaxdRWte   2023年11月02日   65   0   0 CustomerJavaJPAJavaCustomerJPA

大力:“Java网络编程需要通过套接字去进行客户程序与服务器程序的交互,这种底层的通信实现起来比较麻烦,有没有现成的API呢?” 卫琴:“JDK为基于HTTP协议的网络通信提供了协议处理框架API,Java客户程序通过它来访问HTTP服务器,会很方便。” 本文以HTTP客户程序为例,介绍URL类和URLConnection类的用法。 一、URL类的用法 以下例程的HttpClient1类利用URL类和URLConnection类创建了一个简单的HTTP客户程序。 /HttpClient1.java(使用URL类的openStream()方法)/ importjava.net.; impor...

  3YcfDaxdRWte   2023年11月02日   26   0   0 Java.NETJavaHTTPHTTP.net

大力:“继承关系最大的弱点就是打破了封装。如果面试官问我这个问题,该如何精辟地回答呢?” 卫琴:“在设计对象模型时,每个类都应该封装它的属性以及实现细节,这样,当这个类的实现细节发生变化时,不会对其他依赖它的类造成影响。而在继承关系中,子类能够访问父类的属性和方法,也就是说,子类会访问父类的实现细节,子类与父类之间是紧密耦合关系,当父类的实现发生变化,子类的实现也不得不随之变化,这削弱了子类的独立性。” 继承使得子类与父类之间是紧密耦合关系 由于继承关系会打破封装,这增加了维护软件的工作量。尤其是在一个Java软件系统还使用了一个第三方提供的Java类库的场合。例如在基于Web的Java应用...

  3YcfDaxdRWte   2023年11月02日   32   0   0 父类子类父类JavaJava子类

大力:“Java语言引入了静态导入语法(importstatic),有什么作用?” 卫琴:“能够在需要经常访问同一个类的方法或成员变量的场合,简化程序代码。” static修饰符静态导入可以简化程序代码 下面是一个未使用静态导入的例子: classTestStatic{ publicstaticvoidmain(String[]args){ System.out.println(Integer.MIN_VALUE); System.out.println(Integer.MAX_VALUE); System.out.println(Integer.parseInt("223")); } }...

大力:“基本类型与引用类型有什么区别?” 卫琴:“概括起来,两者有三个区别。掌握了这三个区别,就会对这两种Java类型的本质一目了然。” 区别一:基本类型只表示数据,而引用类型(数组类型除外)所引用的对象除了表示数据,还可以拥有方法。 下面以double基本类型和Double类类型为例,来解释这两者的区别。类类型是引用类型的一种。 double基本类型仅仅表示基本的浮点型数据,而Double是一种类类型,它不仅能表示一个浮点型数据,而且还具有各种各样的方法。例如: //定义一个double基本类型变量v1,并为它赋值 doublev1=12.4; //定义一个Double类类型的变量v2,...

大力:“内部类回调外部类的实现,是咋回事?” 卫琴:“回调实质上是指一个外部类尽管实际上实现了某种功能,但是没有直接提供相应的接口,客户类可以通过这个外部类的内部类的接口来获得这种功能。而这个内部类本身并没有提供真正的实现,仅仅调用外部类的实现。可见,回调充分发挥了内部类具有访问外部类的实现细节的优势。” 大力:“既然外部类已经提供了某功能的实现细节,那为啥不向客户程序提供公开的接口,而是由内部类来提供接口呢?” 卫琴:“我举个例子,你就会明白为啥有时候外部类无法自己出面,却要委托内部类来充当接口。” 在以下Adjustable接口和Base类中都定义了adjust()方法,这两个方法的参数...

InputStream类有一个read()方法,它的返回类型是int。 InputStream类本身是抽象类,它的一些子类的read()方法每次读取一个字节,也就是8个二进制位。 比如读到如下二进制数据: 111111111 以上二进制数据如果按照byte类型来转换,是负数-1。 而read()方法会把它先变成32位的二进制数据: 00000000000000000000000011111111 以上显然是一个int类型的正整数255。 下面再通过一个范例程序来演示。以下代码先通过DataOutputStream的writeByte()方法向test.txt文件写入一个值为-1的字节,...

  3YcfDaxdRWte   2023年11月02日   20   0   0 txt文件Java二进制数

在Java虚拟机进程中,执行程序代码的任务是由线程来完成的。 每当用java命令启动一个Java虚拟机进程,Java虚拟机就会创建并启动一个main主线程,该线程从程序入口main()方法开始执行。 main主线程执行main()方法 下面以例程1的Sample为例,介绍线程的运行过程。 例程1 Sample.java publicclassSample{ privateinta;//实例变量 publicstaticvoidmain(Stringargs[]){ Samples=newSample(); System.out.println(s.a); } } 运行以上Sa...

  3YcfDaxdRWte   2023年11月02日   20   0   0 主线程Java程序代码

下文通过生动形象的例子,帮助小伙伴们轻轻松松地理解Java虚拟机的基本作用。 大力:“为什么说Java语言是一种高级编程语言呢?” 卫琴:“之所以称Java为高级语言,是因为它和人类的语言有一点点相近。比如用Employee类表示员工,用name属性表示员工的姓名,用selfIntro()方法模拟员工的自我介绍行为,这都很符合人类的思维习惯。” 程序是交代电脑执行的一连串操作命令。可是,电脑作为硬件,只懂得由“1”和“0”排列组合成的机器指令语言。电脑无法直接看得懂用Java高级编程语言编写出来的源程序代码。 为了让电脑“看得懂”程序员编写的Java程序,需要借助Java语言的两个重要工具: ...

  3YcfDaxdRWte   2023年11月02日   27   0   0 字节码源程序Java

final修饰符具有“不可改变”的含义,它可以修饰类、成员方法和变量: 用final修饰的类不允许被继承,即没有子类。 用final修饰的成员方法不允许被子类的方法覆盖。 用final修饰的变量表示常量,只允许被赋一次值。 一锤定音的final修饰符 1.final类 用final修饰的类不允许有子类。在以下情况,可以考虑把类定义final类型,使得这个类不能被继承: 不是专门为继承而设计的类,类的方法之间有复杂的调用关系。假如随意创建这些类的子类,子类有可能会覆盖父类的方法,并且错误地修改父类的实现细节。 出于安全的原因,类的实现细节不允许有任何改动。 确信这个类不会再被扩展。 例...

  3YcfDaxdRWte   2023年11月02日   52   0   0 显式子类初始化

在JDK的java.util包中提供了一个实用类Timer,它能够定时执行特定的任务。TimerTask类表示定时器执行的一项任务。 定时器能够定时执行特定的任务 以下Machine类演示了定时器的用法。 packageusetimer; importjava.util.Timer; importjava.util.TimerTask; publicclassMachineextendsThread{ privateinta; publicvoidstart(){ super.start(); Timertimer=newTimer(true);//把与Timer关联的线程设为后台线程 ...

  3YcfDaxdRWte   2023年11月02日   57   0   0 MachineJava定时任务
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~