[更新,对不起有关更改,但现在对真正的问题] 我不能在那里包含try-catch-loop来获取方法getCanonicalPath()的异常.我试图先用方法解决问题,然后在那里声明值.问题是它是最终的,我无法改变它.那么如何将startingPath作为"public static final".
$ cat StartingPath.java
import java.util.*;
import java.io.*;
public class StartingPath {
public static final String startingPath = (new File(".")).getCanonicalPath();
public static void main(String[] args){
System.out.println(startingPath);
}
}
$ javac StartingPath.java
StartingPath.java:5: unreported exception java.io.IOException; must be caught or declared to be thrown
public static final String startingPath = (new File(".")).getCanonicalPath();
^
1 error
Run Code Online (Sandbox Code Playgroud) 我一直在制作街机视频游戏,我需要一些关于子弹方向的帮助.现在我只有一颗不移动的子弹,它只是在它开始的地方绘制(我正在一步一步地做所有事情).问题是我不知道子弹向右或向左的方向.我有一个名为bullet的布尔变量,当子弹被触发时(当X键被释放时)变为true.
public void pistol( boolean right ) {
if( right ) {
dbg.fillRect( barrelRightX, barrelY, barrelWidth, barrelHeight );
dbg.fillRect( handleRightX, handleY, handleWidth, handleHeight );
}
else {
dbg.fillRect( barrelLeftX, barrelY, barrelWidth, barrelHeight );
dbg.fillRect( handleLeftX, handleY, handleWidth, handleHeight );
}
if( bullet ) {
if( right )
dbg.drawOval( barrelRightX + barrelWidth, barrelY, 5, 5 );
else
dbg.drawOval( barrelLeftX - 5, barrelY, 5, 5 );
}
}
Run Code Online (Sandbox Code Playgroud)
if(bullet)之前的第一段代码只是为了画手枪.我把它放在那里你可以看到右边是一个布尔参数.基本上这意味着如果子弹被射击并且如果手枪朝右,那么你会画出子弹,看起来好像它正好从枪管中出来,如果子弹被射击而且它没有朝右(这显然意味着它面向左边)然后你会画它所以它看起来像它通常会出现.问题是,因为有一个巨大的动画循环来运行整个程序,当我发射子弹并改变手枪的方向(从右到左或从左到右)时,子弹会改变位置,这不应该发生.我尝试制作子弹最终版,但是当X键被释放时我需要它来改变它.那么,有没有办法让它最终成为最终的?
在接口与抽象类的问题和接受的答案的刺激下,我希望得到一个更详细和澄清的答案.特别是我无法理解语句"接口中的字段是隐式静态和最终的".这是否意味着实现包含方法foo()的接口的类A可以调用该方法A.foo()?
关于final的内容:只要接口只包含方法,给定一个实现带方法接口的抽象类A foo()和class B扩展它的普通接口abstract class A,不能class B覆盖foo方法吗?就我而言,最终的方法是不可能被覆盖的.最后真的是什么?
我对Java中的final变量声明有以下疑问
如果我在代码中声明以下变量:
private final String CURRENT_USER;
Run Code Online (Sandbox Code Playgroud)
Eclipse向我显示以下错误消息:空白的最终字段CURRENT_USER可能尚未初始化
为什么?根据我的理解,如果我将变量声明为final,我只能初始化一次,但在我看来,只有在我声明它而不是在代码中的某个地方之后才能初始化它...
为什么?
TNX
安德里亚
Whu这是一个无效的建筑
class A <T extends String & Comparable<T>>{}
Run Code Online (Sandbox Code Playgroud)
出:
java: java.lang.Comparable cannot be inherited with different arguments: <T> and <java.lang.String>
Run Code Online (Sandbox Code Playgroud)
但它是有效的
class A <T extends Number & Comparable<T>>{}
Run Code Online (Sandbox Code Playgroud)
我注意到它与String相关是最终的但是数字 - 不是.
但是T String在我认为的第一种情况下是有效的.为什么不?
我正在映射一个表...说Employee到ArrayList<Employee>一个类级变量,我将在多个地方使用它,而不是每次都访问数据库.
我想把它保持为只读,即.没有人可以添加或删除
ArrayList曾经填充过的元素.
有人可以建议一种方法来实现这一目标吗
编辑:修改后我想要Exception抛出一些东西.
提前致谢
如何在Java中将构造函数中的最终int初始化为比前一个实例大1并且我可以这样做吗?我的意思是我有一个final int messageID;必须对每个实例都是唯一的,我该怎么做?
我问同事他为什么在这种方法中使用final关键字进行分配,他的回答是"为什么不呢?".我没有看到将决赛放在这里的好处.或者经常,我也会在课堂定义中看到它.
protected void sendIndexWorkflowRequest(Status status)
{
final long contextId = status.getAppContextId();
PrepareIndexPostData preparePostData = new PrepareIndexPostData.Builder(contextId).build();
searchIndexService.activateAggsIndex(preparePostData);
}
Run Code Online (Sandbox Code Playgroud) 尝试在内部类内部使用一个类的本地成员时遇到此错误。我知道将其声明为final将解决此问题,但我读到Java 8应该自动处理它,因为我将Intellij与Java 8一起使用,但它仍然无法编译。还有其他方法可以在不将其声明为final的情况下进行修复吗?谢谢。
以下是Brian Goetz的Java Concurrency in Practice中列出7.20的代码:
public class CheckForMail {
public boolean checkMail(Set<String> hosts, long timeout, TimeUnit unit)
throws InterruptedException {
ExecutorService exec = Executors.newCachedThreadPool();
final AtomicBoolean hasNewMail = new AtomicBoolean(false);
try {
for (final String host : hosts)
exec.execute(new Runnable() {
public void run() {
if (checkMail(host)) hasNewMail.set(true);
}
});
} finally {
exec.shutdown();
exec.awaitTermination(timeout, unit);
}
return hasNewMail.get();
}
private boolean checkMail(String host) { // Check for mail return
false;
}
}
Run Code Online (Sandbox Code Playgroud)
参考此代码,Goetz说"使用AtomicBoolean而不是volatile布尔值的原因是为了从内部Runnable访问hasMail标志,它必须是final,这将阻止修改它"(p.158 ).
为什么它必须是最终的?难道你不能让它成为一个非最终的布尔波动?
final ×10
java ×10
static ×2
arraylist ×1
boolean ×1
collections ×1
concurrency ×1
constructor ×1
generics ×1
interface ×1
oop ×1
scope ×1