instanceof

重写equals方法

江枫思渺然 提交于 2019-12-10 07:49:49
我们都知道,==是用来比较引用的(物理上的相等),而equals方法是用来比较值的(逻辑上的相等),在许多时候需要重写equals方法来实现我们的需求,比如把对象放到容器中,然后去查找对象。 在重写equals 方法时要遵循一些契约: 自反性:对于非空引用x而言,x.equals(x) 必须为true 对称性:对于非空引用x和y,如果x.equals(y)为true,那么y.equals(x)必须也为true 传递性:对于非空引用x,y和z,如果x.equals(y)为true,并且y.equals(z)为true,那么x.equals(z)必须也为true 持久性:对于非空引用x和y,如果x.equals(y) 为true,那么当在x和y并未被修改的情况下,无论执行多少次x.equals(y),这个结果都为true null-false: 对于非空引用x,x.equals(null) 始终为false 反例: 破坏自反性 1 public class AntiReflexive { 2 3 private String str; 4 public String getStr() { 5 return str; 6 } 7 8 public void setStr(String str) { 9 this.str = str; 10 } 11 12 public boolean

判断数组类型的方法

淺唱寂寞╮ 提交于 2019-12-09 22:50:15
别看这个问题看似简单,面试真的经常问到,没有总结过得话一时间还有点想不起来! 一、instanceof instanceof只适用于对象类型的数据,基本类型会直接返回false,其实现原理是在原型链上查找某属性。 let arr = [1, 2, 3]; let a = arr instanceof Array; console.log(a); // true 二、ES6中的isArray方法 let arr = [1, 2, 3]; console.log(Array.isArray(arr)); // true 三、__proto__和prototype let arr = [1, 2, 3]; console.log(arr.__proto__ === Array.prototype); //true 四、constructor let arr = [1, 2, 3]; console.log(arr.__proto__.constructor === Array); //true 五、toString方法 let arr = [1, 2, 3] console.log(Object.prototype.toString.call(arr)); // [object Array] 来源: CSDN 作者: 小丁冲鸭! 链接: https://blog.csdn.net/DZY

MyBatis Plus:No qualifying bean of type 'com.baomidou.mybatisplus.mapper.BaseMapper<?>' available: expected single matching bean but found 4

别说谁变了你拦得住时间么 提交于 2019-12-09 10:20:02
场景: 应用MyBatis Plus 和通用Mapper 继承自ServiceImpl实现对Service里的方法进行包装再处理。 public interface IServiceBase2<T extends AbstractDTO> { } public class ServiceBaseImpl2<M extends BaseMapper<P>,P extends Model<P>,D extends AbstractDTO> extends ServiceImpl<M,P> implements IServiceBase2<D> { private Class<P> poClazz; private Class<D> dtoClazz; public ServiceBaseImpl2(){ Type superClass = getClass().getGenericSuperclass(); if (superClass instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType) superClass; Type[] types = parameterizedType.getActualTypeArguments(); if (types !=

Java: How to check if an object is an instance of a non-static inner class, regardless of the outer object?

孤街醉人 提交于 2019-12-09 05:08:55
问题 If I have an inner class e.g. class Outer{ class Inner{} } Is there any way to check if an arbitrary Object is an instance of any Inner , regardless of its outer object? instanceof gives false when the objects are not Inner s from the same Outer . I know a workaround is just to make Inner a static class, but I'm wondering if what I'm asking is possible. Example: class Outer{ Inner inner = new Inner(); class Inner{} public boolean isInner(Object o){ return o instanceof Inner; } } Outer outer1

instanceof operator - why there is Illegal compile time error

ぃ、小莉子 提交于 2019-12-09 01:00:11
问题 Considering the following code, I don't understand why "System.out.println( c2 instanceof D);" will result an "illegal compile time error" but not return "false"? Many thanks for your help! interface I { } class A { int x = 1;} class B extends A implements I { int y = 2;} class C extends B { } class D extends B{ } class E implements I { } C c2 = new C();` 回答1: The error from Java 8 is: error: incompatible types: C cannot be converted to D And indeed, C and D are not in the same lineage (other

javascript 面向对象编程 (1)

我与影子孤独终老i 提交于 2019-12-08 18:50:33
1.理解global对象 global对象是作为 window 对象的一部分实现的,我们无法通过代码访问到 global 对象。 我们平时在全局环境下定义的内容(变量,函数,常量等等)都是作为 global 对象的属性存在的(都属于 global 对象) 2.基本类型(原始类型)数据的存储方式 变量在存储原始类型的数据时, 直接将数据存储到变量的内存空间中 , 当我们将存储数据的变量赋值给另一个变量时,其实是将变量存储的 数据复制 了一份保存到另一个变量的内存空间中, 因为每个变量都是使用自己独立的存储空间保存原始类型的数据,因此我们改变其中一个变量空间中的数据时,不会影响到另一个变量 1 <body> 2 <script> 3 4 /* 5 变量在存储原始类型的数据时,直接将数据存储到变量的内容空间中。 6 */ 7 8 var color1 = 'red'; 9 10 /* 11 当我们将存储原始数据的变量赋值给另一个变量时,其实是将变量存储的数据复制了一份保存到了另一个变量的内存空间中。 12 */ 13 var color2 = color1; 14 15 /* 16 因为每个变量都是使用自己独立的存储空间保存原始类型的数据,因此我们改变其中一个变量空间中的数据时,不会影响到另一个变量。 17 */ 18 color1 = 'green'; 19 20 console

Checking the class type of a mock object

本小妞迷上赌 提交于 2019-12-08 16:10:01
问题 currently I'm testing a method that gets an object and checks if that object is an instance of a class that is stored as instance variable. So far no problem. But in the test I have to use mocks and one of these mocks is the object that is passed on to that method. And now, it becomes tricky. Let's see the code (I summed up the code in this test): Class<AdapterEvent> clazz = AdapterEvent.class; AdapterEvent adapterEvent = Mockito.mock(AdapterEvent.class); Assert.assertTrue(adapterEvent

Retrofit的优点

倾然丶 夕夏残阳落幕 提交于 2019-12-08 04:20:33
Retrofit的优点 可以配置不同HTTP client来实现网络请求,如okhttp、httpclient等 将接口的定义与使用分离开来,实现结构。 支持多种返回数据解析的Converter可以快速进行数据转换。 和RxJava集成的很好 因为容易和RxJava结合使用,所以对于异步请求,同步请求也不需要做额外的工作。 Retrofit是基于OKHttp 简单使用 配置依赖 在module的build.gradle中添加 // Retrofit api "com.squareup.retrofit2:retrofit:2.3.0" api "com.squareup.retrofit2:converter-gson:2.3.0" api "com.squareup.retrofit2:adapter-rxjava2:2.3.0" // OkHttp3 api "com.squareup.okhttp3:okhttp:3.10.0" api "com.squareup.okhttp3:logging-interceptor:3.10.0" // RxJava2 api "io.reactivex.rxjava2:rxjava:2.1.9" api "io.reactivex.rxjava2:rxandroid:2.0.2" // RxLifecycle api "com