最终类和将类构造函数作为私有类之间的区别究竟是什么.
我知道两者都不能被分类(如果我错了,请纠正我).他们有什么不同吗?
我对以下代码块(Sample)的执行存在基本疑问:
String version = computer.getSoundcard().getUSB().getVersion();
Run Code Online (Sandbox Code Playgroud)
NullPointerException如果Soundcard不存在,可能会抛出
所以我有 ,
选项1 :
if(computer!=null &&
computer.getSoundCard() !=null &&
computer.getSoundCard().getUSB()!=null) {
version = computer.getSoundcard().getUSB().getVersion();
}
Run Code Online (Sandbox Code Playgroud)
选项2:
if(computer !=null){
SoundCard sc = computer.getSoundCard();
if(sc!=null){
USB usb = sc.getUSB();
if(usb!=null){
version = usb.getVersion();
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,选项1将有额外的开销,因为它必须多次评估相同的表达式,如computer.getSoundCard() 3次,computer.getSoundCard().getUSB()2次.
我的理解是否正确?
编辑1:更改了选项2
version = computer.getSoundcard().getUSB().getVersion();
Run Code Online (Sandbox Code Playgroud) 在Java中重写方法具有以下功能:
1> Overrinding方法应该与Parent类方法具有相同的参数列表.
2>返回类型应该是父类方法的返回类型的相同/子类.
3>访问级别应与父类方法相同或更少限制.
4> overriden方法可以抛出相同或更窄的异常,而不是更广泛的异常.
*只是想知道为什么这么点*
*2 - 为什么子类为什么不是超类呢?*
3 - 为什么访问级别应该限制较少?
4 - 为什么它应该抛出狭窄的异常?
根据我的理解它只是如果我创建一个父类refrence创建一个子类对象并尝试运行每个方案然后
让我们假设A是父类,B是子类,它们都有方法printAndReturnSomething()
public class A{
public B printAndReturnSomething(){
S.O.P("Inside A Print");
return new B();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我们将子类B作为
public class B extends A{
public A printAndReturnSomething(){ // I know this isn't possible to return A but had it been then
S.O.P("Inside A Print");
return new A();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我做这样的事情
A a =new B();
Run Code Online (Sandbox Code Playgroud)
现在因为我有一个A的引用,所以我希望返回类型是B类型
B returnedValue=a.printAndReturnSomething(); …Run Code Online (Sandbox Code Playgroud) 我在主ui线程(mUIHandler)和工作线程(其他线程)中创建了一个Handler实例,当我尝试执行runnable的run方法时,run方法几乎被执行了10次,但是有那个1次没有被执行.
mUIHandler.post(uiRunnable) - >它是否总能保证执行runnable中的run方法?
我甚至添加了日志方法来检查,并且可以看到日志直到post方法innvocation被执行但是run方法日志没有显示.
帖子(可运行)如何在内部工作?是否保证ui线程(带有处理程序的线程)会在调用post后立即执行此操作?
任何帮助,将不胜感激.
谢谢!
我有以下形式的数据 -
01/04/2011 - {00:00,1.0} ; {01:00,2.0} ; {02:00,1.5} ;{04:00,2.3}
02/04/2011 - {00:00,2.0} ; {01:00,2.1} ; {02:00,1.5} ;{04:00,2.3}
03/04/2011 - {00:00,3.0} ; {01:00,2.0} ; {02:00,1.6} ;{04:00,2.3}
04/04/2011 - {00:00,1.0} ; {01:00,2.5} ; {02:00,1.57} ;{04:00,2.3}
05/04/2011 - {00:00,1.9} ; {01:00,2.7} ; {02:00,1.5} ;{04:00,2.3}
06/04/2011 - {00:00,1.08} ; {01:00,2.02} ; {02:00,1.9} ;{04:00,2.3}
07/04/2011 - {00:00,1.7} ; {01:00,2.0} ; {02:00,1.10} ;{04:00,2.3}
Run Code Online (Sandbox Code Playgroud)
我必须将它们存储在某些DataStructure中,以便我可以使用日期作为键来访问它们.同样,对于特定的日期,{k,v}对应按插入方式排序.
请建议哪个是在这种情况下使用的最佳DataStructure,以及应该使用它的原因.提前致谢!