标签: final

Java:startingPath为"public static final"异常

[更新,对不起有关更改,但现在对真正的问题] 我不能在那里包含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)

java static scope final

0
推荐指数
1
解决办法
1485
查看次数

初始化最终但不是invar?

我一直在制作街机视频游戏,我需要一些关于子弹方向的帮助.现在我只有一颗不移动的子弹,它只是在它开始的地方绘制(我正在一步一步地做所有事情).问题是我不知道子弹向右或向左的方向.我有一个名为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键被释放时我需要它来改变它.那么,有没有办法让它最终成为最终的?

java boolean final

0
推荐指数
1
解决办法
70
查看次数

接口的静态和最终字段的含义

接口与抽象类的问题和接受的答案的刺激下,我希望得到一个更详细和澄清的答案.特别是我无法理解语句"接口中的字段是隐式静态和最终的".这是否意味着实现包含方法foo()的接口的类A可以调用该方法A.foo()

关于final的内容:只要接口只包含方法,给定一个实现带方法接口的抽象类A foo()class B扩展它的普通接口abstract class A,不能class B覆盖foo方法吗?就我而言,最终的方法是不可能被覆盖的.最后真的是什么?

java static final interface

0
推荐指数
1
解决办法
1231
查看次数

关于在Java中声明为final的变量的一些说明?

我对Java中的final变量声明有以下疑问

如果我在代码中声明以下变量:

private final String CURRENT_USER;
Run Code Online (Sandbox Code Playgroud)

Eclipse向我显示以下错误消息:空白的最终字段CURRENT_USER可能尚未初始化

为什么?根据我的理解,如果我将变量声明为final,我只能初始化一次,但在我看来,只有在我声明它而不是在代码中的某个地方之后才能初始化它...

为什么?

TNX

安德里亚

java final

0
推荐指数
1
解决办法
70
查看次数

泛型和关键字final

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在我认为的第一种情况下是有效的.为什么不?

java generics final

0
推荐指数
1
解决办法
90
查看次数

如何防止ArrayList被结构修改?

我正在映射一个表...说Employee到ArrayList<Employee>一个类级变量,我将在多个地方使用它,而不是每次都访问数据库.

我想把它保持为只读,即.没有人可以添加或删除ArrayList曾经填充过的元素.

有人可以建议一种方法来实现这一目标吗

编辑:修改后我想要Exception抛出一些东西.

提前致谢

java collections final arraylist

0
推荐指数
1
解决办法
133
查看次数

在构造函数中自动初始化int messageID

如何在Java中将构造函数中的最终int初始化为比前一个实例大1并且我可以这样做吗?我的意思是我有一个final int messageID;必须对每个实例都是唯一的,我该怎么做?

java constructor final

0
推荐指数
1
解决办法
79
查看次数

为什么最终关键字在方法中大量使用,即使最终没有定义它们也是完全正确的

我问同事他为什么在这种方法中使用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)

java final

0
推荐指数
1
解决办法
87
查看次数

“从内部类内部访问变量需要声明为最终的”错误

尝试在内部类内部使用一个类的本地成员时遇到此错误。我知道将其声明为final将解决此问题,但我读到Java 8应该自动处理它,因为我将Intellij与Java 8一起使用,但它仍然无法编译。还有其他方法可以在不将其声明为final的情况下进行修复吗?谢谢。

java oop final intellij-idea inner-classes

0
推荐指数
1
解决办法
769
查看次数

为什么Goetz不再使用volatile boolean for Listing 7.20?

以下是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 ).

为什么它必须是最终的?难道你不能让它成为一个非最终的布尔波动?

java concurrency multithreading final atomicboolean

0
推荐指数
1
解决办法
74
查看次数