我知道有很多问题,但我仍然不太明白.我知道这两个关键字的作用,但我无法确定在某些情况下使用哪个.以下是一些我正在尝试确定最适合使用的示例.
例1:
import java.net.ServerSocket;
public class Something extends Thread {
private ServerSocket serverSocket;
public void run() {
while (true) {
if (serverSocket.isClosed()) {
...
} else { //Should this block use synchronized (serverSocket)?
//Do stuff with serverSocket
}
}
}
public ServerSocket getServerSocket() {
return serverSocket;
}
}
public class SomethingElse {
Something something = new Something();
public void doSomething() {
something.getServerSocket().close();
}
}
Run Code Online (Sandbox Code Playgroud)
例2:
public class Server {
private int port;//Should it be volatile or the threads accessing it …Run Code Online (Sandbox Code Playgroud) 可能重复:
函数是否只有一个return语句?
这就是我所说的.
if (condition) {
aVariable = 1;
return;
}
doSomething();
if (condition) {
aVariable = 1;
} else {
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
这些中的一个优先于其他(惯例等)吗?
当我创建一个新数组时,我会做这样的事情.
int[] anArray = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
但我看到有些人做了类似的事情.
int[] anArray = new int[] {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
我明白它的作用,但我不明白它的目的.这样做有什么好处呢?
谢谢
这是我正在使用的代码
public class aClass<T> {
private T[] elements;
public aClass(T[] elements) {
this.elements = elements;
}
public void doSomething() {
T[] newArray = (T[]) new Object[5];
...
}
}
Run Code Online (Sandbox Code Playgroud)
我见过有人说创建像这样的数组是一个坏主意,因为它不是类型安全的.但是,每次我使用它,我都没有问题.何时创建这样的数组会导致问题?
谢谢
如果JFrame窗口最小化,有没有办法让它重新聚焦?
我试图让它点击某一点,然后恢复它.
while (isRunning) {
start = System.currentTimeMillis();
frame.setState(Frame.ICONIFIED);
robot.mouseMove(clickX, clickY);
robot.mousePress(InputEvent.BUTTON1_MASK);
frame.setState(Frame.NORMAL);
Thread.sleep(clickMs - (System.currentTimeMillis() - start));
}
Run Code Online (Sandbox Code Playgroud) 当我打电话给JList<String>.getModel()它时,DefaultListModel<String>它给了我这个例外.
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JList$4 cannot be cast to javax.swing.DefaultListModel
Run Code Online (Sandbox Code Playgroud)
抛出它的代码:
private JList<String> list = new JList<String>();
((DefaultListModel<String>) list.getModel()).addElement(...);
Run Code Online (Sandbox Code Playgroud)
但它并不是每次都这样做.大部分时间它完美地运行,但有时它会抛出这个异常.我不明白为什么会这样.有什么办法可以阻止这种情况发生吗?
SwingUtilities.invokeLater(Runnable)如果你正在修改GUI并且你在AWT事件调度线程中,你应该使用ActionListener吗?
我正在下载文件,但还尝试以KBps确定下载速度.我提出了一个等式,但它给出了奇怪的结果.
try (BufferedInputStream in = new BufferedInputStream(url.openStream());
FileOutputStream out = new FileOutputStream(file)) {
byte[] buffer = new byte[4096];
int read = 0;
while (true) {
long start = System.nanoTime();
if ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
} else {
break;
}
int speed = (int) ((read * 1000000000.0) / ((System.nanoTime() - start) * 1024.0));
}
}
Run Code Online (Sandbox Code Playgroud)
它给了我100到300,000之间的任何地方.如何才能使下载速度正确?谢谢
每个系统的LookAndFeel的所有组件大小是否相同?
UIManager.getSystemLookAndFeelClassName();
Run Code Online (Sandbox Code Playgroud)
如果不是,哪种布局类型最适合处理每个系统上的组件大小不同?
谢谢.
我想要的是创建一个新的JFrame,保持我当前的JFrame可见,但不创建一个新的窗口/程序.我无法解释清楚,所以这是我的意思的图片:
http://screensnapr.com/e/mkCMlm.png
对不起,如果这有任何混乱.任何帮助表示赞赏.