我在Java中有一个“私有静态”嵌套类。访问修饰符对此类中的字段和方法的意义是什么?我已经尝试了公共和私有方式,但对我的申请没有影响。
public class MyList<T>{
private static class Node{ // List node
private Object item;
private Node next;
private Node prev;
private Node(Node next){
this.next = next;
}
private static Node doStuff(){}
}
}
两种嵌套类:1.静态(嵌套类)和2.非静态(也称为内部类)
现在,外部类MyList
可以访问内部类的所有成员Node
,但是Node
当您想要限制某些外部类访问它时,实际上您可以对类(嵌套类)的成员使用访问说明符。
有趣的读物:Source1,Source2
问题内容: 我的同事建议使一些Eclipse代码格式和警告设置更加严格。这些更改中的大多数都是有道理的,但是我在Java中收到这一奇怪的警告。这是一些重现“问题”的测试代码: 与!!使用新的警告设置在Eclipse中向我发出此警告: 对访问构造函数WeirdInnerClassJavaWarning.InnerClass()的访问由合成访问器方法模拟。增加其可见性将改善您的性能。 这是什么意思?当
如果静态成员在Java中没有继承,那么为什么访问修饰符(私有的,受保护的……)适用于它们? 也许,我不是100%清楚术语“继承”:当他们说“静态不继承”时,他们是指“不可见”还是“不能重新定义/重新实现”,或者两者兼而有之? 如果说访问修饰符在谈到静态类成员时只意味着可见性,而在谈到常规类成员时意味着可见性和重新实现的可能性,这是否正确? PS:现在我认为“Java中的静态变量不是继承的,它们只存
我想如果一个类被声明为public,它可以从任何地方访问。但是为什么eclipse称之为错误呢?
如何验证是否调用了私有嵌套类的非静态方法?这就是我目前的情况: 我明白了: 更新1: @丹尼斯,我试过以下方法,不过我得到了一个。我想根据JVM中已经存在的单例验证方法的运行,而不是创建它的新实例(正如我在下面的代码中所做的那样),以便调用方法。我尝试调用,但没有成功。有没有一种方法可以使用外部类的运行实例上的反射来验证jmockit中对私有嵌套类中非静态方法的调用(通过调用)? 更新2: 尝试获
我是Java的初学者。我正在学习最终变量,并尝试了这段代码。 然而,Eclipse给了我一个错误。 我做错了什么?如何将所有对象的最终变量设置为静态?
根据留档(http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html)的第二个表,没有标识符的成员对子类不可见。 但是,当我运行下面的示例代码时,“1”(b的内容)被打印出来! 如果没有访问修饰符的成员不能从子类访问,那么为什么在本例中打印它 它应该抛出一个错误,就像在私有访问修饰符中一样,不是吗?