首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Effective Java要点笔记

再讲单例实现 常见的有三种 枚举 静态属性或静态块 双重检查锁 不需要实例化的类 尽量把构造器私有化,比如一些工具类,避免不必要的对象意外创建 对象如果可重用,就少创建点 但是如果因为多创建了实例而提高了程序的清晰...类的每个实例都只与他自身相等 类是私有的或者是包级私有的,那么可以确定它的equals方法永远不会被调用,这时候需要覆盖equals方法,防止被意外调用 如果要判断“逻辑相等“,且父类equals做不到这个功能的时候需要覆写...,相等对象必须具有相同的hashCode值~ 不要将equals声明中的Object对象替换为其它的类型,应该覆盖Object的 equals方法 要始终覆盖toString方法,打印的信息更加具有可读...assert断言 我们要保护的去设计程序,如果API设计的不好,客户端很容易误解,并导致不可预期的行为,所以编写面对客户的不良行为时仍能保持健壮的类,这是非常值得投入时间去做的事情。...要注意是否允许调用者修改其内部的组件, 关于方法签名的设计: 方法名称尽量要风格一致,并选择大众认可的名称 类的方法设计太多,会使类难以学习,使用,文档化,测试以及维护 避免过长的参数列表,目标参数个数

41710

Groovy 快速入门

列表 Groovy中的列表比较灵活,有点像Python中的列表使用[....]语法可以声明列表,默认情况下列表是ArrayList实现。我们也可以使用as运算符自己选择合适的列表底层类型。...使用方法和Python差不多。我们使用[索引]引用和修改列表元素。如果索引是负的,则从后往前计数。要在列表末尾添加元素,可以使用左移运算符<<。...下面的例子中,第一次调用p.name = 'Marge'如果在类内部,就直接写入字段,如果调用在类外部,就会使用Setter写入。...Kotlin语言也是类似的做法,有助于我们先出可读很好的闭包。...Groovy闭包类似Java的Lambda表达式和匿名内部类,不过使用更方便,能让我们减少不少代码量。

1.3K10
您找到你想要的搜索结果了吗?
是的
没有找到

iOS_单元测试一之UnitTests

3、相等和不想等断言 4、可比值断言 5、异常断言 6、无条件测试失败 7、跳过测试 8、异步测试 四、查看单测覆盖率 五、性能测试 六、其他 1、为测试添加全局断点: 2、测试项目里的文件 3、私有属性和方法...为不为nil XCTAssertNotNil(self.vc.subscribeButton) 3、相等和不想等断言 Equality and Inequality Assertions: XCTAssertEqual...:断言两个对象相等 XCTAssertNotEqual:断言两个对象相等 例如: // 断言 两个对象 相等 XCTAssertEqual(self.subscribeButton, self.vc.subscribeButton...) // 断言 两个对象相等 XCTAssertNotEqual(self.subscribeButton, self.subscribeButton2) 4、可比值断言 Comparable Value...此时需要设置一下对该段代码期望的运行时间,设置方式如下图: 设置完之后,再测试一遍该方法,就能看到满足期望的比例了: ---- 六、其他 1、为测试添加全局断点: 2、测试项目里的文件 Swift项目,当我们需要使用一个类时

86920

#Android单元测试学习总结「建议收藏」

使用@InjectMocks自动注入依赖对象 三、PowerMockito框架使用 1. 普通Mock的方式 2. Mock方法内部new出来的对象 3. Mock普通对象的final方法 4....使用真实返回值 7. Mock私有方法 8. Mock普通类的私有变量 9. 对静态void方法进行Mock 10....和 actual 的值相等,如不相等则抛异常携带指定message信息 assertEquals(Object expected, Object actual) 断言两个对象相等 assertEquals...(String message, Object expected, Object actual) 断言两个对象相等,如果不相等则抛出异常携带指定的message信息 assertEquals(float...通过verify关键字,一旦mock对象被创建了,mock对象会记住所有的交互。然后你就可能选择的验证你感兴趣的交互。

4.8K20

Java50个关键字总结

abstract public E get(int index); 2.assert  assert表示“断言”,有两种使用方法:  assert 表达式; 若表达式为真,程序继续执行;若表达式为假,则抛出一个...使用assert时不能在表达式中完成任何程序实际所需的行为(只能做判断)。因为正常发布的代码都是断言无效的,即正常发布的代码中断言语句都不不执行的。 ...static{     ... } 静态内部类:用static修饰内部类。 ...但只能保证数据的可见性,不能保证数据的原子。例如在处理i++的时候另外一个线程修改i的值,那么i的值将会发生错误,这是原子导致的。 ...exp)断言此位置的前面不能匹配表达式exp 6.引用分类  强引用:StrongReference:引用指向对象,gc运行时不回收软引用:SoftReference:gc运行时回收,(jvm内存不够)

57100

Java50个关键字总结

abstract public E get(int index); 2.assert  assert表示“断言”,有两种使用方法:  assert 表达式; 若表达式为真,程序继续执行;若表达式为假,则抛出一个...使用assert时不能在表达式中完成任何程序实际所需的行为(只能做判断)。因为正常发布的代码都是断言无效的,即正常发布的代码中断言语句都不不执行的。 ...static{     ... } 静态内部类:用static修饰内部类。 ...但只能保证数据的可见性,不能保证数据的原子。例如在处理i++的时候另外一个线程修改i的值,那么i的值将会发生错误,这是原子导致的。 ...exp)断言此位置的前面不能匹配表达式exp 6.引用分类  强引用:StrongReference:引用指向对象,gc运行时不回收软引用:SoftReference:gc运行时回收,(jvm内存不够)

61200

Java50个关键字总结

abstract public E get(int index); 2.assert  assert表示“断言”,有两种使用方法:  assert 表达式; 若表达式为真,程序继续执行;若表达式为假,则抛出一个...使用assert时不能在表达式中完成任何程序实际所需的行为(只能做判断)。因为正常发布的代码都是断言无效的,即正常发布的代码中断言语句都不不执行的。 ...static{     ... } 静态内部类:用static修饰内部类。 ...但只能保证数据的可见性,不能保证数据的原子。例如在处理i++的时候另外一个线程修改i的值,那么i的值将会发生错误,这是原子导致的。 ...exp)断言此位置的前面不能匹配表达式exp 6.引用分类  强引用:StrongReference:引用指向对象,gc运行时不回收软引用:SoftReference:gc运行时回收,(jvm内存不够)

56900

走进Java接口测试之流式断言库AssertJ

前言 AssertJ简介 AssertJ使用 导包 入门使用 对象断言 布尔断言 Iterable/Array断言 字符断言断言 文件断言 Double/Float/Integer断言 InputStream...重要的是要记住,与其他一些库不同,下面的代码实际上并没有断言任何东西,并且永远不会失败测试: assertThat(anyRefenceOrValue); 如果你使用IDE的代码完成功能,由于其描述非常强的方法...对象断言 可以以各种方式比较对象,以确定两个对象相等或检查对象的字段。...AllArgsConstructor public class Dog { private String name; private Float weight; } 让我们看两种方法,我们可以比较两个对象相等...(fidosClone); } 当通过字段比较执行递归字段时,Fido和fidosClone是相等的,因为一个对象的每个字段与另一个对象中的字段进行比较。

1.2K00

效率编程 之「方法」

对于非公有的方法,我们也可以使用断言来检查它们的参数,例如下面的冒泡排序方法: private static void bubbleSort(int[] array) { // 使用断言...为了保护Period实例的内部信息避免受到这种攻击,对于构造器的每个可变参数进行保护拷贝是必要的,并且使用备份对象作为Period实例的组件,而不使用原始的对象: public Period(Date...注意,保护拷贝是在检查参数的有效之前进行的,并且有效检查是针对拷贝之后的对象,而不是针对原始对象。...例如,这样的子类可以在每个实例被创建的时候,把指向该实例的引用记录到一个私有的静态列表中,并且允许攻击者访问这个列表。这将使得攻击者可以自由地控制所有的实例。...值得一提的是,有经验的程序员通常使用Date.getTime()返回long基本类型作为内部的时间表示法,而不是使用Date对象引用,因为Date是可变的。

45120

《Java核心技术 卷I:基础知识》读书笔记

3.6.4 检测字符串是否相等 可以使用s.equals(t)检测是否相等,但不能使用==,后者只能确定两个字符串是否放在同一个位置上,这点C++应该也是一样的。...6.4.1 使用内部类访问对象状态 内部类可以隐式地访问创建它的外部对象,并使用外部对象域中的所有数据。...MyApp 11.4.2 使用断言完成参数检查 断言使用场景: 断言的失败是致命的、不可恢复的错误。 只用于开发和测试阶段。...该散列表使用的是桶实现,将散列表对桶的总数求余,得到的结果为保存这个元素的桶的索引。会碰上散列冲突问题,因此每个桶内部应该是链表。 13.2.4 树集 树集是有序集合,可以以任意形式插入但是顺序输出。...监视器的特性: 是只包含私有域的类 每个监视器类的对象有一个相关的锁 使用该锁对所有方法进行加锁。

55620

java核心技术第六篇之断言、日志、包装类型和工具类

断言只应该是在测试阶段确定程序内部错误的位置。 断言是一种测试和调试阶段所使用的战术工具;而日志记录是一种在程序的整个生命周期都可以使用的策略工具。...抽象类、方法需要被继承、覆盖才可使用,final修饰的类、方法不可被继承、覆盖 2. abstract 不能与 private 一起修饰方法(private只能修饰内部类) 理由同上,私有方法不能被继承...成员内部类可以访问外部类中所有的、静态的、私有的属性和方法 2. 成员内部类中不可以定义静态的属性和方法 3....创建静态内部对象,可以直接使用该类的类型创建(静态成员不依赖于外部类的对象) 创建静态内部对象: 外部类.静态内部类 引用名 = new 外部类.静态内部类(); (不依赖外部类对象...,直接用类型创建) 局部内部类: 作用同下 匿名内部类: new 接口名() { 接口的实现代码 } 用途: 需要一个仅仅使用一次的对象时,直接在方法内部创建、使用,不需要打断思路

83610

Junit单元测试教程_单元测试调试react源码

它通过测试来检验程序是否能正常使用。在测试过程中,我们把程序看作为一个打不开的盒子,黑黑的什么也看不见,内部代码怎么写的也不知道。...(即对象是否相等) assertNotSame(java.lang.Object unexpected, java.lang.Object actual) 检查两个对象引用是否不引用统一对象(即对象不等...Assert.assertEquals(预期值, 结果); 这时候我们发现Assert句点出来的方法可以既可以断言数组,也可以断言普通数据类型。所以这时候我们就来使用断言预期值。...如下: 这时候,我们就断言result结果的预期值为1。断言后,发现未达到预期值就会报错! 注意: 我们使用断言的时候尽量不要去断言Double对象。...否则使用两个参数的来断言double类型,会有如下报错信息: 七、@Before和@After注解 我们在上述,你是否会发现有一些重复操作呢?比如,我们每一个方法都需要去new对象

68120

2022 最新整理的 Java 中高级面试题(最新版 Java 面试宝典)

12 字符串在 JDK 内部是用的编码存储?13 Java 9 之后,String 底层为什么使用 byte[],而不是 char[]?...30 Java 中的断言(assert)是什么?31 IntegerCache 类有什么用?32 char 类型可以存储中文汉字吗?33 Java 中的一个汉字占几个字节?...40 Java 反射可以访问私有方法吗?41 Java 反射可以访问私有变量吗?42 Java 反射可以访问父类的成员吗?43 Java 反射可以访问父类的私有方法吗?...50 判断两个字符串是否相等(1)51 判断两个字符串是否相等(2)52 判断两个字符串是否相等(3)53 判断两个字符串是否相等(4)54 String.intern()...70 为什么一个对象的字节大小为 8 的整数倍?71 对象不再使用时,需要赋值为 null 吗?72 如何实现对象克隆?73 对象克隆浅拷贝和深拷贝的区别?

86730

JAVA程序员面试30问(附带答案)

注: 静态内部类(Inner Class)意味着 1 创建一个static内部类的对象,不需要一个外部类对象 2 不能从一个static内部类的一个对象访问一个外部类对象 第四,&和&&的区别。...要在编译时启用断言,需要使用 source 1.4 标记: javac -source 1.4 Test.java 要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。...要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。 要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。...可以在预计正常情况下不会到达的任何位置上放置断言断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。...equals()是判读两个Set是否相等。 equals()和==方法决定引用值是否指向同一对象 equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

38320

JAVA安全编码标准学习分享

Arrays.equals()方法来比较两个数组的内容 4、不要用相等操作符来比较两个基础数据类型的值 5、确保使用正常的类型来自动封装数值 6、不要在一个表达式中对同一变量进行多次写入 7、不要在断言...特别需要注意的是ThreadLocal是浅拷贝,避免引用逸出 6、对可变输入和可变的内部组件创建防御复制。...变量 10、在构造函数中尽可能的不出现异常 六、方法 1、不要使用断言验证方法参数,断言失败后并不会抛出一个适当真实的异常 2、进行安全检测的方法必须声明为private或final 3、对类、接口、方法和数据成员的可访问进行限制...保证在读写64位的数值时的原子 九、锁 1、通过私有final锁对象可以同步那些与非受信代码交互的类,因为它满足不可变原则,JVM使尽优化也不会出现线程安全问题 2、不要基于那些可能被重用的对象进行同步...5、不要允许序列化和反序列化绕过安全管理器 6、不能序列化内部类实例,当内部类被序列化时,包含在外部类的字段也会被序列化 7、在反序列化时,必须在readObject()方法中对私有的可变组件进行防御复制

4.5K10

Spring Boot(十二)单元测试JUnit

白盒测试:把测试对象看作一个打开的盒子,程序内部的逻辑结构和其他信息对测试人 员是公开的; 回归测试:软件或环境修复或更正后的再测试; 单元测试:最小粒度的测试,以测试某个功能或代码块。...一般由程序员来做,因为它需要知道内部程序设计和编码的细节; JUnit GitHub地址:https://github.com/junit-team 二、JUnit使用 开发环境: Spring Boot...断言测试也就是期望值测试,是单元测试的核心也就是决定测试结果的表达式,Assert对象中的断言方法: Assert.assertEquals 对比两个值相等 Assert.assertNotEquals...对比两个值不相等 Assert.assertSame 对比两个对象的引用相等 Assert.assertArrayEquals 对比两个数组相等 Assert.assertTrue 验证返回是否为真...JUnit对web项目进行测试,Spring 提供了“TestRestTemplate”对象使用这个对象可以很方便的进行模拟请求。

91331
领券