DAY2019-11-24
- Integer
①无论如何,Integer与new Integer不会相等。不会经历拆箱过程,
②两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false
java在编译Integer i2 =
128的时候,被翻译成-> Integer i2 = Integer.valueOf(128);
而valueOf()函数会对-128到127之间的数进行缓存
③两个都是new出来的,都为false
④int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比
- reflection
import java.lang.reflect.*;
public class DumpMethods {
public static void main(String args[]) {
try {
Class c = Class.forName("java.util.Stack");
Method m[] = c.getDeclaredMethods();
for (int i = 0;
i < m.length;
i++)
System.out.println(m[i].toString());
}
catch (Throwable e){
System.err.println(e);
}
}
}
它的结果输出为:
public synchronized java.lang.Object java.util.Stack.pop()
public java.lang.Object java.util.Stack.push(java.lang.Object)
public boolean java.util.Stack.empty()
public synchronized java.lang.Object java.util.Stack.peek()
public synchronized int java.util.Stack.search(java.lang.Object)
这样就列出了java.util.Stack 类的各方法名以及它们的限制符和返回类型。
这个程序使用 Class.forName 载入指定的类,然后调用 getDeclaredMethods 来获取这个类中定义了的方法列表。
java.lang.reflect.Methods 是用来描述某个类中单个方法的一个类。
- 开始使用 Reflection
用于 reflection 的类,如 Method,可以在 java.lang.relfect 包中找到。使用这些类的时候必须要遵循三个步骤:第一步是获得你想操作的类的 java.lang.Class 对象。在运行中的 Java 程序中,用 java.lang.Class 类来描述类和接口等。
下面就是获得一个 Class 对象的方法之一:
Class c = Class.forName(“java.lang.String”);
这条语句得到一个 String 类的类对象。还有另一种方法,如下面的语句:
Class c = int.class; 或者 Class c = Integer.TYPE;
它们可获得基本类型的类信息。其中后一种方法中访问的是基本类型的封装类 (如 Integer) 中预先定义好的 TYPE 字段。
第二步是调用诸如 getDeclaredMethods 的方法,以取得该类中定义的所有方法的列表。
推荐阅读
- 【欢喜是你·三宅系列①】⑶
- 晨读感悟《去情绪化管教(帮助孩子养成高情商、有教养的大脑》)
- 你还怕大雨吗
- codility|codility 之 MissingInteger
- 道德经(七)>|道德经(七)> 不上贤
- 我的第三个男朋友
- 你的心是我偷的,但玫瑰是真的
- 那么多面试之有些HR都是大猪蹄子①
- 2018.05.08
- 冬末光亦暗③