- 浏览: 175977 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (87)
- Android (7)
- J2EE (34)
- JavaScript (6)
- CSS (1)
- Scala (0)
- WEB (5)
- Ruby (1)
- J2EE Netbeans JDK (1)
- Maven (2)
- AndroidMenuTest (0)
- ExtJS (1)
- MyBatis (4)
- iBatis (3)
- Quartz (1)
- JavaABC (3)
- HTML (1)
- JQuery (2)
- mysql (3)
- Linux (2)
- windows (1)
- ant (2)
- jboss (1)
- eclipse (1)
- junit (1)
- nginx (1)
- Google (0)
- git (2)
- python (1)
- kafka (1)
- sqlserver (1)
- jdk8+ (1)
参考http://www.importnew.com/16700.html
我们可以将类设置为final,这样就不能扩展。甚至,我们可以将构造器设置为私有的,以防止对这个类实例化,这样就永远不会破坏约定。此外,如果一个特殊的常量在同一个类中被多次使用,则开发者可以使用静态引入。
所有对于常量类,比较好的设计应该是:
静态引入的例子:
这个设计问题也称为接口常量反模式(Constant Interface Anti-pattern)。
我们可以将类设置为final,这样就不能扩展。甚至,我们可以将构造器设置为私有的,以防止对这个类实例化,这样就永远不会破坏约定。此外,如果一个特殊的常量在同一个类中被多次使用,则开发者可以使用静态引入。
所有对于常量类,比较好的设计应该是:
package three; //make the class non-extendable by adding final 增加final关键字来避免继承 public final class Constants { //Hide the constructor 隐藏构造器 private Constants(){} public static String NAME="name"; }
静态引入的例子:
import static three.Constants.NAME; public class UseConstants { public static void main(String[] args) { System.out.println("the value of constants is"+NAME); } }
这个设计问题也称为接口常量反模式(Constant Interface Anti-pattern)。
发表评论
-
日志过滤小工具
2020-01-06 20:15 4631.从全量日志中截断部 ... -
GC参考手册
2017-11-09 14:12 568英文版原文:GC Tuning: In Practice 垃圾 ... -
IDENTITY_INSERT 设置为 OFF 时无法指定插入自增ID
2017-02-15 16:10 664IDENTITY_INSERT 设置为 OFF 时,无法指定I ... -
运行时Exception:Wrong return type in function
2015-11-17 21:31 1534D:\Soft\jdk1.7.0_79\bin\java ... -
java Socket通信小栗子
2015-09-14 09:25 617server端: package com.test.soc ... -
MyBatis 自动生成xml文件
2015-03-12 11:22 3812package com.test.mybatis; ... -
Java mail test
2015-02-12 11:03 1332mail局域网Exchange服务器测试代码,仅限发送到dom ... -
Java Concurrency / Multithreading Tutorial
2014-10-28 09:35 708Java Concurrency / Multithreadi ... -
Comparison method violates its general contract!
2014-10-22 17:24 966jdk1.6升级到1.7后Comparator有null的参数 ... -
JDK1.7 不兼容compare方法
2014-10-21 16:20 797java.lang.IllegalArgumentExcept ... -
Unknown Source的出现及解决
2014-06-18 10:03 934http://www.2cto.com/kf/201103/8 ... -
ApplicationDeadlockException
2014-06-16 15:39 786参考 : How to avoid huge transact ... -
Java Date相关处理
2014-02-26 14:35 6091.获取UTC时间: Calendar c ... -
Error listenerStart
2013-12-11 19:25 733INFO: Deploying web applicati ... -
Error configuring application listener of class org.springframework.web.context.
2013-12-07 18:54 38186如果Eclipse的BuildPath里面不缺jar包并且在 ... -
iReport字体报错“JRFontNotFoundException”
2013-10-11 11:08 12812net.sf.jasperreports.engine.uti ... -
Eclipse里Jboss的配置
2013-07-15 17:41 9651.\WorkSpace\.metadata\.plugins ... -
Ant安装使用入门
2013-07-04 14:03 572下载Ant之后,增加环境变量1.ANT_HOME=xx/xx/ ... -
javaSystem获取系统信息
2013-03-27 16:30 812public static void main(Strin ... -
设计模式学习笔记
2013-03-22 18:01 845简单工厂,策略模式,单一职责,开放封闭,依赖倒转 装饰模式,代 ...
相关推荐
这篇名为“Java中的常量如何避免反模式”的资料详细阐述了在Java开发中使用常量的最佳实践和经验技巧。以下是一些关键知识点的概述: 1. **常量定义的位置**: - 在Java中,常量通常定义在`final`修饰的静态字段中...
总结起来,避免Java中的常量反模式,关键在于保持常量的独立性,合理地组织和封装常量,避免它们与业务逻辑深度耦合。通过使用final类、隐藏构造器、静态导入等手段,可以有效地提高代码的可维护性和扩展性。理解并...
Java常量接口反模式 这篇文章最初发布在我的博客上: : 您如何在Java中定义和使用常量? Internet上的大多数建议具有以下意见: 为类中的常量声明public static final 不要将接口用于常量 定义常量的最常见方法...
本篇文章将深入探讨Java中的三种单例实现方式:饿汉单例、懒汉单例以及序列化与反序列化对单例的影响。 **1. 饿汉单例模式** 饿汉单例在类加载时就完成了初始化,因此是线程安全的。它的实现方式通常使用静态常量...
【小颖 Java 源代码反编译专家】是一款针对Java字节码进行反编译的专业工具,旨在帮助开发者查看并理解已编译的Java类文件的原始源代码。这款软件小巧精悍,操作简便,功能强大,是开发、调试和学习Java技术的重要...
这种模式在Java中广泛应用于系统配置、线程池、缓存管理等场景,因为这些场景通常只需要一个共享的全局对象来协调工作。 首先,我们要了解为什么需要单例。在多线程环境中,如果一个类可以随意创建多个实例,可能会...
### Java23中设计模式详解 #### 创建型模式 **1. Singleton(单例模式)** - **定义**:确保某个类只有一个实例存在,并提供一个全局的访问点。 - **应用场景**:适用于需要频繁实例化的资源密集型对象,如数据库...
在Java中,我们可以使用多种方式来实现单例模式: 1. **饿汉式(静态常量)**:这是最简单的单例实现方式,它在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快,且线程安全。 ```java public class...
标题中的“java 反编译工具”可能是指一个便携式的反编译器,比如JAD (Java Decompiler) 或者JD-GUI,这些工具通常不需要安装,只需一个可执行文件(.exe)即可运行。 1. **什么是Java反编译**: Java反编译是将...
7. **编程技巧**:从反编译的代码中学习不同的编程技巧和设计模式。 综上所述,Java反编译工具是开发者的重要辅助工具,它们帮助我们洞察代码的内部运作,提升我们的编程技能。不过,使用时一定要遵守相关法律法规...
Java软件中的Class文件是Java字节码的载体,它...在实际应用中,掌握如何使用这些反编译工具,可以帮助Java开发者更好地理解和分析已有的程序,提高开发效率。不过,同时也应尊重知识产权,合法合规地使用这些工具。
标题提到的“JAVA反编译工具”以及描述中指出的功能,揭示了我们今天要讨论的核心知识点:如何使用反编译器将Java字节码转换为源代码。 1. **Java字节码与源代码的关系**: Java程序首先由Java编译器(javac)将....
单例模式是软件设计模式中的一种经典模式,它在Java编程中被广泛使用,尤其是在需要控制实例化过程,确保一个类只有一个实例时。这个模式的主要目的是限制类的实例化次数,提供全局唯一的访问点,同时可能对性能和...
Java反编译工具是开发者用来查看和理解Java字节码(.class文件)的工具,这对于没有源代码的情况下分析和学习已编译的Java程序非常有帮助。这些工具将二进制的字节码转换回接近原始Java源代码的形式,虽然不能完全恢复...
本文档旨在介绍 Java 中一些常用的类库,帮助初学者更好地理解和使用这些类库。尽管文档内容并不全面,但包含了大多数常用的类库,对于新手来说较为易懂。 #### 二、Java 常用类库详解 ##### 1. `java.applet` - ...
这份中文完整版的Java API文档不仅包含上述知识点的详细说明,还包括了每个类的构造函数、方法、常量的描述,以及实例代码和异常信息,对于学习和查阅Java相关知识非常有帮助。开发者可以通过阅读和理解这些API,...
9. **字符串处理**:Java中的String类及其操作,如拼接、查找、替换和模式匹配,都是编程中常见的任务。 10. **泛型和枚举**:泛型提供了一种方式来限制容器元素的类型,而枚举则用于定义固定数量的值,这两者在...
Java反编译是将已编译的Java字节码(.class文件)转换回可读性强的源代码(.java文件)的过程。这对于理解库、框架或者无法获取源代码的程序来说非常有用。本文将深入探讨Java反编译的相关知识点。 一、Java字节码...
12. **枚举**: Java中的枚举类型可以提供比常量更好的类型安全性和可读性。 13. **Lambda表达式和函数式编程**: Java 8引入的新特性,简化了匿名内部类的使用,增强了代码的简洁性和可读性。 14. **Swing或JavaFX*...