我对java不熟悉,最近看到一些同事写的代码让我很困惑。这是它的要点:publicresponsenewStuff(//randomdatainside){try{responseor=//givesitavaluelog.info(or.toString());returnor;}catch(Exceptione){e.printStackTrace();}finally{returnnull;}}在这里添加finallyblock真的有什么意义吗?我不能只在catchblock中添加returnnull,这将执行相同的行为,还是我错了? 最佳答案
我正在为多个玩家(线程)同时移动的游戏建模。玩家当前所在位置的信息被存储了两次:玩家有一个变量“hostField”,它引用了棋盘上的一个字段,每个字段都有一个ArrayList存储当前位于该字段的玩家。我对我有冗余信息这一事实不太满意,但我发现如果不循环访问大型数据集,就无法避免这种情况。但是,当玩家从一个field移动到另一个field时,我想确保(1)冗余信息保持关联(2)目前没有其他人在操纵该field。因此我需要做类似的事情synchronized(player,field){//code}这是不可能的,对吧?我该怎么办?:) 最佳答案
我正在为多个玩家(线程)同时移动的游戏建模。玩家当前所在位置的信息被存储了两次:玩家有一个变量“hostField”,它引用了棋盘上的一个字段,每个字段都有一个ArrayList存储当前位于该字段的玩家。我对我有冗余信息这一事实不太满意,但我发现如果不循环访问大型数据集,就无法避免这种情况。但是,当玩家从一个field移动到另一个field时,我想确保(1)冗余信息保持关联(2)目前没有其他人在操纵该field。因此我需要做类似的事情synchronized(player,field){//code}这是不可能的,对吧?我该怎么办?:) 最佳答案
因此,在Java中,构造函数的第一行必须是对super的调用……无论是隐式调用super(),还是显式调用另一个构造函数。我想知道的是,为什么我不能在它周围放一个tryblock?我的具体情况是我有一个模拟类进行测试。没有默认构造函数,但我想要一个使测试更易于阅读。我还想将构造函数抛出的异常包装到RuntimeException中。所以,我实际上想要做的是:publicclassMyClassMockextendsMyClass{publicMyClassMock(){try{super(0);}catch(Exceptione){thrownewRuntimeException(e)
因此,在Java中,构造函数的第一行必须是对super的调用……无论是隐式调用super(),还是显式调用另一个构造函数。我想知道的是,为什么我不能在它周围放一个tryblock?我的具体情况是我有一个模拟类进行测试。没有默认构造函数,但我想要一个使测试更易于阅读。我还想将构造函数抛出的异常包装到RuntimeException中。所以,我实际上想要做的是:publicclassMyClassMockextendsMyClass{publicMyClassMock(){try{super(0);}catch(Exceptione){thrownewRuntimeException(e)
假设我有一些Java代码:publicclassSomeClass{static{privatefinaldoublePI=3.14;privatefinaldoubleSOME_CONSTANT=5.76;privatefinaldoubleSOME_OTHER_CONSTANT=756.33;}//restofclass}如果一个线程正在初始化SomeClass的Class对象,并且在第二个线程想要再次加载SomeClass的Class时正在初始化静态block中的值,那么发生在静态block上?即使第一个线程没有完成,第二个线程是否会忽略它假设它已经初始化?还是发生了其他事情?
假设我有一些Java代码:publicclassSomeClass{static{privatefinaldoublePI=3.14;privatefinaldoubleSOME_CONSTANT=5.76;privatefinaldoubleSOME_OTHER_CONSTANT=756.33;}//restofclass}如果一个线程正在初始化SomeClass的Class对象,并且在第二个线程想要再次加载SomeClass的Class时正在初始化静态block中的值,那么发生在静态block上?即使第一个线程没有完成,第二个线程是否会忽略它假设它已经初始化?还是发生了其他事情?
我正在使用JAXB将我的数据序列化为XML。类代码很简单,如下所示。我想为某些Args的值生成包含CDATAblock的XML。例如,当前代码生成以下XML:1234<html>EMAIL</html>我想将“源”arg包装在CDATA中,如下所示:1234EMAIL]]>如何在下面的代码中实现这一点?@XmlRootElement(name="command")publicclassCommand{@XmlElementWrapper(name="args")protectedListarg;}@XmlRootElement(name="arg")publicclassA
我正在使用JAXB将我的数据序列化为XML。类代码很简单,如下所示。我想为某些Args的值生成包含CDATAblock的XML。例如,当前代码生成以下XML:1234<html>EMAIL</html>我想将“源”arg包装在CDATA中,如下所示:1234EMAIL]]>如何在下面的代码中实现这一点?@XmlRootElement(name="command")publicclassCommand{@XmlElementWrapper(name="args")protectedListarg;}@XmlRootElement(name="arg")publicclassA
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭9年前.“finally”block总是在try-catch结束时执行,无论是否发生异常。但也总是执行try-catch之外和之后的每一行代码。那么,为什么要使用finally语句呢?例子:try{//code...}catch(Exceptione){//code...}finally{System.out.println("Thislineisalways