草庐IT

more-private

全部标签

java - 公开类,但对 JAR 文件保持私有(private)

有没有办法使Java类公开但仅对JAR文件公开?也就是,它不是私有(private)包,而是公共(public)包,但不是JAR公共(public)包?假设我有这样的结构:project/package1/One.javapackage2/Two.javapackage3/Three.java由于3个.java文件位于不同的包中,因此我需要将其公开。但是有没有办法让它们只对包含该项目的JAR公开?这样如果另一个项目导入JAR,它就看不到某些公共(public)类/字段? 最佳答案 使用项目Jigsaw在Java9中,您可以完全做到这

java - 是否可以使用反射从 Java 类中检索所有成员,包括私有(private)成员?

例如,我希望能够写作Method[]getMethods(Classc)这会和现有的做同样的事情Class.getMethods()但也包括私有(private)和protected方法。我有什么想法可以做到这一点吗? 最佳答案 publicMethod[]getMethods(Classc){Listmethods=newArrayList();while(c!=Object.class){methods.addAll(Arrays.asList(c.getDeclaredMethods()));c=c.getSuperclass

java - 非公有或非私有(private)的变量-Java

各位程序员大家好,如果一个变量被定义为不是在方法外定义的public或private比如:Graphicsgoff;Imageii;Threadthethread;变量将被定义为什么? 最佳答案 没有任何显式修饰符定义的变量将具有package-private的访问级别。这些变量只能在它自己的包中访问。您可以阅读有关javahere的访问/变量范围级别的更多信息. 关于java-非公有或非私有(private)的变量-Java,我们在StackOverflow上找到一个类似的问题:

java - 为什么允许访问另一个对象的私有(private)字段?

最近,我观察到在Java中访问priavte字段的意外行为。考虑以下示例,它说明了行为:publicclassA{privateinti;为什么我可以在foo方法中访问类A的另一个对象的私有(private)字段(第二种情况)? 最佳答案 私有(private)字段保护的是一个类,而不是一个实例。主要目的是允许类独立于其API实现。在它们之间隔离实例,或保护实例的代码免受同一类的静态代码的影响将不会带来任何结果。 关于java-为什么允许访问另一个对象的私有(private)字段?,我们

java - 在 Java 中,为什么父类(super class)方法不能从子类实例访问 protected 或私有(private)方法/变量?

让我们从另一个行为开始:即使您将方法/变量声明为私有(private),同一类的另一个实例也可以访问它。没关系,我可以忍受。我称这些为类私有(private)而不是实例私有(private)。现在是问题部分:例如,在运行时我希望能够检查this类中的所有String变量是否不为null,如果它们为null,则应将其更改为字符串“NULL”。我可以使用反射遍历变量并获取它们的值。但是,如果我扩展我的类并添加私有(private)或什至protected变量,我的基类将无法访问它们。我必须先对变量进行setAccessible,然后才能使用它们。所以请向我解释为什么基类(父类(superc

java - 子类是否继承父类(super class)的私有(private)实例变量

Dosubclassesinheritprivatefields?这个问题解决了同样的问题,但我不太明白它如何满足下面(看似)矛盾的情况。http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html表示“子类不继承其父类的私有(private)成员。”这意味着它既不继承私有(private)实例变量也不继承私有(private)方法,对吧?但是,如果它从其父级继承公共(public)访问器方法,这将如何工作?它返回一个它不知道存在的实例变量?此外,我的计算机科学书籍(Baron的APComputerScienceA)

java - 通过java中的内联创建对象访问私有(private)元素

我是java的新手,正在尝试一些访问方法,但遇到了一些我不明白的事情。下面的代码工作正常,打印9并且没有给出任何编译错误。我认为这段代码应该给出一个编译错误并且数字应该无法从测试方法访问,因为newHuman()是一个完全不同的类的实例。任何人都可以向我解释这里发生了什么吗?publicclassTest{publicstaticvoidmain(String[]args){intnumber=9;test("holla",newHuman(){@Overridevoidtest(){//TODOAuto-generatedmethodstubSystem.out.println(nu

c# - 在 C# 或 Java 中子类化时是否可以覆盖私有(private)成员?

我正在学习C#和Java,并且有一个关于继承的问题。是否可以覆盖父类(superclass)(基类)中的私有(private)成员?在我看来,这是不正确的,因为访问修饰符会阻止成员被访问。 最佳答案 这不是一个愚蠢的问题,但它给出了隐藏变量的另一个概念。Java中的字段只是隐藏的,实际上并没有被覆盖(这并不意味着我们在尝试此操作时会遇到编译时错误,而是它们并没有真正意义上的被覆盖)。覆盖意味着应该根据对象的运行时类型而不是声明的类型来调用成员。但是Java中字段的绑定(bind)始终是静态的,因此它仅基于对象引用的声明类型。在文章中

java - 如何测试只修改私有(private)类成员变量的void方法?

我正在尝试对初始化一些私有(private)字段的类中的方法进行单元测试:publicvoidinit(Propertiesprops)throwsException{this.language=props.getProperty(Constants.LANGUAGE,Constants.LANGUAGE_DEFAULT);this.country=props.getProperty(Constants.COUNTRY,Constants.COUNTRY_DEFAULT);try{this.credits=Integer.valueOf(props.getProperty(Consta

Java OOP 公共(public)、私有(private)、 protected

我了解public、private和protected的作用。我知道您应该使用它们来遵守面向对象编程的概念,并且我知道如何在使用多个类的程序中实现它们。我的问题是:我们为什么要这样做?为什么我不应该让一个类直接修改另一个类的全局变量?即使您不应该,为什么还需要protected、private和public修饰符?就好像程序员不相信自己不会这样做,即使他们是编写程序的人。提前致谢。 最佳答案 你是对的,这是因为我们不能相信自己。可变状态是计算机程序复杂性的一个主要因素,构建一开始看起来不错的东西太容易了,但随着系统变大,它会失去控制