考虑以下:
Map<Class<?>, Object> myMap = new HashMap<Class<?>, Object>();
Foo fooObject = New Foo();
myMap.put(fooObject.getClass(), fooObject)
Run Code Online (Sandbox Code Playgroud)
请注意,java.lang.Class本身并不实现hashCode()方法,而是隐式地从java.lang.Object继承它.我在JDK 1.8中验证了这一点.
可以java.lang.Class安全地用作钥匙java.util.HashMap吗?将myMap.get(Foo.class)始终返回,我把喜欢的价值观myMap.put(fooObject.getClass(), fooObject)?考虑该软件具有各种类加载器和序列化机制.它仍然会是相同的结果吗?如果不是......会有什么选择?
对于其他原始数字(如int或long ),Java中的Math.signum(double)或Math.signum(float)是否具有等效函数.我不想写代码
int sign = (int) Math.signum((double) intValue);
Run Code Online (Sandbox Code Playgroud)
什么时候有更好的选择.
IntellJ Idea项目中是否可以用当前的类名+ .class替换对getClass()的所有调用?
因此,例如替换:
class ClassName{
public method(){
Logger.logDebug(getClass(), "Some information")
}
}
Run Code Online (Sandbox Code Playgroud)
与
class ClassName{
public method(){
Logger.logDebug(ClassName.class, "Some information")
}
}
Run Code Online (Sandbox Code Playgroud)