摘要:重复注解 Java8以前,同一个程序元素前最多只能使用一相同类型的注解;如果需要在同一个元素前使用多个相同类型的注解,则必须使用注解"容器"。例如在Struts开发中,有时需要在 Action 类上使用多个@Result注解。在 Java8 以前只能写成如下形式: @Results({ @Resul
阅读全文
摘要:APT的介绍: APT(Annotation Processing Tool)是一种注解处理工具,它对源代码文件进行检测,并找出源文件所包含的注解信息,然后针对注解信息进行额外的处理。 使用APT工具处理注解时可以根据源文件中的注解生成额外的源文件和其他的文件(文件的具体内容由注解处理器的编写者决定
阅读全文
摘要:提取注解信息 使用注解修饰了类、方法、成员变量等成员之后,这些注解不会自己生效,必须由开发者提供相应工具来提取并处理注解信息。 Java使用java.lang.annotation.Annotation接口代表程序元素前面的注解,该接口是所有注解的父接口。Java5在java.lang.reflec
阅读全文
摘要:1,什么是注解: 从JDK5开始,Java增加了对元数据 (MetaData)的支持,也就是Annotation注解,这种注解与注释不一样,注解其实是代码里的特殊标记,这些标记可以在编译、类加载 运行时被读取并执行相应的处理。通过使用注解,程序开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些
阅读全文
摘要:引言 自从JDK5以后,Java Class类增加了泛型功能,从而允许使用泛型来限制Class类,例如,String.class的类型实际上是 Class 如果 Class 对应的类暂时未知,则使 Class<?>。通过在反射中使用泛型,可以避免使用反射生成的对象需要强制类型转换。 泛型作用对比:
阅读全文
摘要:为什么我们使用动态代理 静态代理会让类变多了,多了代理类,工作量变大了,且不易扩展。比如我们上节课的例子,要实现不同的扩展方法就要编写不同的代理类,非常麻烦。 Proxy类的使用规则 Proxy提供了用于创建动态代理类和代理对象的静态方法,它也是所有动态代理类的父类。如果在程序中为一个或多个接口动态
阅读全文
摘要:生活中的代理 类(对象)代理模式 代理模式是面向对象编程中比较常见的设计模式。 1. 用户只关心接口功能,而不在乎谁提供了功能。上图中接口是 Subject 2. 接口真正实现者是上图的 RealSubject,但是它不与用户直接接触,而是通过代理。 3. 代理就是上图中的 Proxy,由于它实现了
阅读全文
摘要:java.lang.reflect包下还提供了Array类 java.lang.reflect包下还提供了Array类,Array对象可以代表所有的数组。程序可以通过使 Array 来动态地创建数组,操作数组元素等。 Array提供了如下几类方法: static Object newInstance
阅读全文
摘要:方法参数反射 Java8在java.lang.reflect包下新增了Executable抽象基类,该对象代表可执行的类成员,该类派生了Constructor和Method两个子类。Executable基类提供了大量方法来获取修饰该方法或构造器的注解信息:还提供了isVarArgs()用于判断该方法
阅读全文
摘要:类 Class 每个类被加载之后,系统就会为该类生成一个对应的Class对象,通过该Class对象就可以访问到JVM中的这个类。 我们在Java中获取Class对象一般有三种方式: (1), 使用Class类的forName(String className)静态方法。该方法需要传入字符串参数,该字
阅读全文
摘要:什么是类加载器 类加载器负责将class文件(可能在磁盘上,也可能在网络上)加载到内存中,并为之生成对应的java.lang.Class对象。Java开发中无须过分关心类加载机制,但所有的编程人员都应该了解其工作机制,明白如何做才能让其更好地满足我们的编程需要。 细说类加载机制 1,一个类只会被加载
阅读全文
摘要:一个进程就有一个JVM,每个进程之间资源独立 当调用java命令来启动某个Java程序的时候,该命令创建一个独立的进程来运行我们的Java程序。而这个独立的进程里面就包含一个Java虚拟机。不管该程序有多么的复杂,该程序启动了多少个线程,他们都处于该Java对应的进程里。同一个JVM的所有线程,所有
阅读全文
摘要:开发思路: 服务端两个Socket: UDP的DatagramSocket接收客户端消息。 广播multicastSocket 发送广播消息 客户端一个Socket: multicastSocket 接收服务端发来的广播 (不允许客户端直接发广播),同时发送点对点数据到UDP服务端DatagramS
阅读全文
摘要:什么是UDP协议: UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket 但这两个 Socket之间并没有虚拟链路,这两个Socket只是发送、接收数据报的对象。Java 提供了DatagramSocket对象作为基于UDP协议的Socket。使用DatagramPacket代
阅读全文
摘要:1、Java中客户端和服务器端通信的简单实例 Java中能接收其他通信实体连接请求的类是ServerSocket,ServerSocket对象用于监听来自客户端的Socket连接,如果没有连接,它将一直处于等待状态 ServerSocket包含一个监听来自客户端连接请求的方法。 ServerSock
阅读全文
摘要:什么是IPV4,什么是IPV6: IPv4使用32个二进制位在网络上创建单个唯一地址。IPv4地址由四个数字表示,用点分隔。每个数字都是十进制(以10为基底)表示的八位二进制(以2为基底)数字,例如:216.27.61.137。 IPv6使用128个二进制位在网络上创建一个唯一地址。IPv6地址由八
阅读全文
摘要:使用JColorChooser: JColorChooser用于创建颜色选择器对话框,该类的用法非常简单,该类主要提供了如下两个静态方法: (1),showDialog(Component component, String title, Color initialColor): 显示一个模式的颜色
阅读全文
摘要:通过JToolBar来创建工具条: Swing提供了JToolBar类来创建工具条,创建JToolBar对象时可以指定如下两个参数: (1),name: 该参数指定该工具条的名称。 (2),orientation: 该参数指定该工具条的方向 一旦创建了JToolBar对象之后,JToolBar对象还
阅读全文
摘要:双缓冲技术的介绍: 所有的Swing组件默认启用双缓冲绘图技术。使用双缓冲技术能改进频繁重绘GUI组件的显示效果(避免闪烁现象)JComponent组件默认启用双缓冲,无须自己实现双缓冲。如果想关闭双缓冲,可以在组件上调用setDoubleBuffered(false)方法。同学们无需深究双缓冲技术
阅读全文