隐藏Javainheritance中的字段

在类中,与超类中的字段具有相同名称的字段会隐藏超类的字段。 public class Test { public static void main(String[] args) { Father father = new Son(); System.out.println(father.i); //why 1? System.out.println(father.getI()); //2 System.out.println(father.j); //why 10? System.out.println(father.getJ()); //why 10? System.out.println(); Son son = new Son(); System.out.println(son.i); //2 System.out.println(son.getI()); //2 System.out.println(son.j); //20 System.out.println(son.getJ()); //why 10? } } class Son extends Father { int i = 2; int j […]

如何在Java的CardLayout中获得顶级卡片

是否可以在Java的CardLayout中获得顶级卡? 我已经尝试循环遍历每个组件以检查isVisible()的可见性,但似乎它们都是“可见的”。 编辑:通过“顶级卡”我的意思是当前处于“顶部”的那个,正在显示,而不是第一张或最后一张牌。 另外,我不知道它是否有帮助,但我正在寻找一个JPanel(或其子类) 编辑:代码段 for (Component component : getComponents()) { if (component instanceof JPanel && component.isVisible()) { currentPanel = (JPanel) component; System.out.println(currentPanel.getClass().getName()); } } 上面的代码总是打印出每个组件类的名称,无论它们是否是可见卡。 编辑 :我将此作为学校作业的一部分。 我不是想在这里获得免费赠品,作业并不围绕这种布局。 它似乎是在面板之间切换最方便的布局。 我的老师已经指定项目中没有第三方代码。 我之前看过camickr链接的实现,但我不能使用它。 我可以松散地实现它的类似function,也许在文档中提供它,但我不能简单地下载和使用它。 编辑 :我试图获得顶级卡的原因是因为我有一个带有“添加”按钮的工具栏。 我没有为我的两个可能的东西添加一个按钮,而是希望通过查看当前正在查看的面板来知道要添加哪个按钮。 如果还有其他更合适的方法,请告诉我。 编辑 :谢谢大家的帮助。 我弄清楚问题是什么。 我想这是我的错,因为我没有提供足够的细节。 我的两张牌是JScrollPane ,我还需要查看其中的内容,看看其中一个面板是否是我看到的那个。 我没有检查滚动窗格本身上的isVisible() ,我一直在查看它始终可见的争议,滚动窗格是我需要validation的可见性。 public JPanel getCurrentPanel() { JPanel currentPanel = null; for (Component […]

在Java中为网格创建绘制矩形(用黑色填充)function

我在程序中创建了一个网格。 下面是用于创建网格的代码。 import java.awt.Graphics; import javax.swing.JComponent; import javax.swing.JFrame; class Grid extends JComponent { public void paint(Graphics g) { g.drawRect (10, 10, 800, 500); for (int i = 10; i <= 800; i+= 10) g.drawLine (i, 10, i, 510); for (int i = 10; i <= 500; i+= 10) g.drawLine (10, i, 810, i); } } […]

FileOutputStream:“close”方法是否也调用“flush”?

我真的很困惑flush和close方法。在我的代码中,我总是关闭我的FileOutputStream对象。 但我想知道如果我必须在这里使用flush方法,我在哪里可以使用它? 我将编写一个重复下载4或5个文件的项目。 我将编写一个方法(用于下载文件),我的方法将循环并重复下载文件。我的方法将有这样的代码。 close方法是否调用flush ,或者在关闭之前是否必须使用flush? try { InputStream inputStream = con.getInputStream(); FileOutputStream outputStream = new FileOutputStream(“C:\\programs\\TRYFILE.csv”); int bytesRead = -1; byte[] buffer = new byte[4096]; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } } catch(Exception e) { // } finally { outputStream.close(); inputStream.close(); } 请注意,代码运行良好:它成功下载文件。 但我不确定使用flush 。

方法本地内部类只能访问最终的局部变量。为什么?

可能重复: 为什么内部类需要“最终”外部实例变量[Java]? 为什么在匿名类中只能访问最终变量? class Outer{ private String x = “instance variable”; void doStuff(){ String z = “local variable”; class Inner{ public void seeOuter(){ System.out.println(“Outer x is : “+ x); System.out.println(“Local variable z is : ” + z); //won’t compile } } } } 将局部变量z标记为final可解决问题: final String z = “local variable”; //Now inner object can use […]

CMS垃圾收集器 – 什么时候运行?

我很困惑可能控制CMS收集器何时启动的两个参数: MaxHeapFreeRatio (默认为70%) CMSInitiatingOccupancyFraction (默认超过90%) 这些参数对每个参数意味着什么? 收集器何时开始(标记阶段),并收集(​​扫描阶段)?

在TimeoutException之后如何让FutureTask返回?

在下面的代码中,我按照预期在100秒后捕获TimeoutException。 在这一点上,我希望代码退出main和程序终止,但它继续打印到控制台。 如何让任务在超时后停止执行? private static final ExecutorService THREAD_POOL = Executors.newCachedThreadPool(); private static T timedCall(Callable c, long timeout, TimeUnit timeUnit) throws InterruptedException, ExecutionException, TimeoutException { FutureTask task = new FutureTask(c); THREAD_POOL.execute(task); return task.get(timeout, timeUnit); } public static void main(String[] args) { try { int returnCode = timedCall(new Callable() { public Integer call() throws Exception { for […]

如何在Jetty中禁用SSLv3协议以防止Poodle攻击

是否有任何特定的排除列表禁用仅SSLv3密码不是TLSv1 / 2。 我有docker8,升级到9现在不是一个选择。 我当前的jetty-ssl.xml如下所示 ……… SSL_RSA_WITH_NULL_MD5 SSL_RSA_WITH_NULL_SHA SSL_RSA_EXPORT_WITH_RC4_40_MD5 SSL_RSA_WITH_RC4_128_MD5 SSL_RSA_WITH_RC4_128_SHA SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 SSL_RSA_WITH_IDEA_CBC_SHA SSL_RSA_EXPORT_WITH_DES40_CBC_SHA SSL_RSA_WITH_DES_CBC_SHA SSL_RSA_WITH_3DES_EDE_CBC_SHA SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA SSL_DH_DSS_WITH_DES_CBC_SHA SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA SSL_DH_RSA_WITH_DES_CBC_SHA SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA SSL_DHE_DSS_WITH_DES_CBC_SHA SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA SSL_DHE_RSA_WITH_DES_CBC_SHA SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA SSL_DH_anon_EXPORT_WITH_RC4_40_MD5 SSL_DH_anon_WITH_RC4_128_MD5 SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA SSL_DH_anon_WITH_DES_CBC_SHA SSL_DH_anon_WITH_3DES_EDE_CBC_SHA SSL_FORTEZZA_KEA_WITH_NULL_SHA SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA SSL_FORTEZZA_KEA_WITH_RC4_128_SHA SSL_DHE_RSA_WITH_AES_128_CBC_SHA SSL_RSA_WITH_AES_128_CBC_SHA 还是当我运行“sslscan –no-failed –ssl3 localhost:443”时,我得到了 Supported Server Cipher(s): Accepted SSLv3 128 bits DHE-RSA-AES128-SHA Accepted SSLv3 128 bits AES128-SHA […]

java tomcat utf-8编码问题

我正在使用java / jsp / tomcat / mysql开发一个简单的Web应用程序,最大的问题在于字符编码,因为我需要处理UTF-8编码而不是默认的8851。 首先,我想描述一下我的程序结构。 我正在使用一个名为Controller.java的Servlet来处理所有请求。 所以在web.xml中,我有一个Controller servlet,它接受来自* .do的所有请求。 然后,此Controller将根据请求的URL分派请求,例如,如果客户端要求register.do,Controller将把请求分派给Register.java。 在Register.java中,有一个方法将请求作为参数,即: public String perform(HttpServletRequest request) { do something with the request… } 所以问题是如果我想在这个方法中用UTF-8打印一些东西,它会给出随机字符。 例如,我有一个存储几个常量的枚举,其中一个属性是Enum在繁体中文中的名称。 如果我打印出来的话 public static void main(Stirng[] args{ System.out.println(MyEnum.One.getChn()); logger.info(MyEnum.One.getChn()); } 这是用中文正确打印的。 但是,如果我将确切的代码放在处理HttpServletRequest的方法中: public String perform(HttpServletRequest request) { System.out.println(MyEnum.One.getChn()); logger.info(MyEnum.One.getChn()); } 它们作为随机字符打印,但我可以从调试窗口(eclipse)看到变量保存正确的中文字符。 因此,当我想存储来自request.getParameter()的值时,会发生同样的情况。 在调试窗口中,我可以看到变量保存了正确的字符,但我将其打印出来或尝试将其存储在数据库中,它是随机字符。 我不知道为什么行为会像这样,这阻止我阅读提交的表单值并将它们存储到数据库中。 有人可以给出一些暗示吗? 万分感谢。

在mac 10.8上执行jar

虽然这似乎是一个相当明显的问题,但我无法在网上找到答案。 在我创建jar文件后,我可以使用命令行成功运行它 java -jar filename.jar 但是,我希望这个文件更加用户友好,换句话说,双击运行。 出于某种原因,当我双击jar文件时,mac jar启动器(Jar \ Launcher.app)打开,暂停一秒然后关闭。 我很感激帮助。 PS。 我通过命令行,bluej和eclipse制作了jar文件,这些方法都没有解决问题。