Tag: 可见性

在这种情况下,是否会抛出此AssertionError?

首先是代码,来自JCIP列出http://jcip.net/listings/StuffIntoPublic.java和http://jcip.net/listings/Holder.java public class SafePublication { public static void main(String[] args) throws InterruptedException { // System.out.println(Thread.currentThread().getName()); StuffIntoPublic t = new StuffIntoPublic(); t.initialize(); while (true) { new Thread(() -> { t.holder.assertSanity(); }).start(); } } } //@author Brian Goetz and Tim Peierls class StuffIntoPublic { public Holder holder; public void initialize() { // System.out.println(Thread.currentThread().getName()); holder = new Holder(42); […]

java swing中的setvisible方法挂起系统

我有正在处理的银行gui应用程序,我的jdialog的setvisible方法似乎有问题。 在用户撤回有效金额后,我弹出一个简单的对话框,显示“正在进行交易”。 在我的dobackground方法中,我继续轮询以检查是否已收到交易。 我尝试使用swingworker,我不明白为什么它不起作用。 如果我删除setvisible调用它工作正常,那么为什么setvisible导致系统挂起? 这是我的jbutton mouselistener中的代码: SwingWorker worker = new SwingWorker(){ JDialog waitForTrans = new JDialog((JFrame)null,true); public String doInBackground() throws Exception { waitForTrans.add(new JLabel(“Updating balance in system. Please Wait…”)); waitForTrans.setMinimumSize(new Dimension(300,100)); waitForTrans.setDefaultCloseOperation(DISPOSE_ON_CLOSE); waitForTrans.setVisible(true); Bank.getInstance().sendTransaction(currentPin,”-“+withdraw); while(!Bank.getInstance().hasCompletedTransaction){ } return null; } public void done(){ try { this.get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException […]

使用私人关键字

我是编程新手。 我现在正在学习Java,有些东西我不太确定,那就是使用私有。 为什么程序员将变量设置为私有,然后将write,getter和setter设置为访问它。 无论如何,为什么不把所有东西都公之于众。 public class BadOO { public int size; public int weight; … } public class ExploitBadOO { public static void main (String [] args) { BadOO b = new BadOO(); b.size = -5; // Legal but bad!! } } 我发现了一些像这样的代码,我看到评论合法但很糟糕。 我不明白为什么,请解释一下。

为什么我们可以降低扩展类中属性的可见性?

我有两个class, Parent : public class Parent { public String a = “asd”; public void method() { } } 和Child : public class Child extends Parent{ private String a = “12”; private void method() { } } 在Child ,我尝试覆盖父method ,该method给出编译时错误, cannot reduce visibility of a method这很好。 但是,为什么这个错误不适用于财产a ? 我也降低了a可见性,但它没有给出错误。

默认情况下,Java构造函数不公开吗?

我在两个不同的包中有两个类。 对于一个类,我已经定义了一个构造函数而没有为它设置访问修饰符。 我想在另一个包中实例化该类的对象,并获得错误’ the constructor xxx() is not visible ‘。 如果我将访问权限定义为public修改,则可以。 我认为构造函数默认是公开的?

Java私有字段可见性

所以前几天我正在创建一个类,当我意识到它生成了以下工作代码时,使用Eclipse的方法创建了equals方法: class Test { private int privateInt; […] public boolean equals(Object obj) { […] Test t = (Test) obj; if ( t.privateInt == privateInt ) { […] } } t.privateInt .. ???? 它假设是私人的! 所以我猜除了private,protected,package protected和public之外还有一个字段可见性。 那么这里发生了什么? 怎么称呼? 有人会用这个吗? 这不会破坏封装吗? 如果class级没有改变者并且我改变了这个怎么办? 这也发生在C ++上吗? 这是一个OO成语吗? 如果没有,那为什么Java会这样做呢? 通常,我在哪里可以找到有关此信息? 谢谢。