当前位置: 首页 > 知识库问答 >
问题:

Java隐藏公共访问器的私有方法

马冯浩
2023-03-14

我有一节课:

import java.util.List;
import java.util.String;
import javax.xml.bind.annotation.XmlType;

@XmlType
public class Foo {
    private List<Foo> compound;
    private String bar; 

    // private method used internally to know 
    // if this is a compound instance
    private boolean isCompound() {
       return compound != null && compound.size() != 0;
    }

    // public setter for compound instance var
    public void setCompound(List<Foo> compound) {
        this.compound = compound;
    }

    // public getter for compound instance var
    public List<Foo> getCompound() {
        return compound;
    }

    public void setBar(String bar) {
        this.bar = bar;
    }

    public String getBar() {
        return bar;
    }
}

在正常使用中,该类的行为与您预期的一样。方法getcomponentsetcomponent获取并设置复合列表。然而,我使用这个类作为一个对象,在使用JAX-WS构建的web服务中传递。当JAX-WS编译器看到这个类时,它会忽略setcomponentgetcomponent访问器,XSD中出现的唯一属性是bar

在一天的大部分时间里,我的头撞在墙上,我决定尝试将私有方法的名称isCompound改为isacomposite,突然间一切都如你所料。JAX-WS为复合属性创建了正确的模式。

似乎正在发生的事情是,JAX-WS看到了是compound方法(即使它是私有的),并将其视为没有相应setter的getter,因此忽略了compound的真正公共访问器。

JavaBean规范中是否有任何内容说您不能拥有私有is


共有1个答案

凤自珍
2023-03-14

如果你改变了,会发生什么

 return compound != null && compound.size() != 0;
 //To:
 private boolean isCompound() {
 boolean check = false;
 if(compound !=null && compound.size()!=0){
    check  = true;
 }else{
    check  =false;
 }
    return check;
 }

//or
@XmlAccessorType(XmlAccessType.NONE) on the class and @XmlElement and @XmlAttribute on the get/set methods.
 类似资料:
  • 我有一个关于静态方法访问的问题。我有一个类,其中有4个静态方法。如代码所示: } 我正在从下面的代码调用来自onLoadShipperDetailsListCtrl()的setSortingEnable()方法: } 因此,如果我从其他类调用setSortingEnabled()方法,我会认为它是公共的,而其他方法是私有的,但它会给我一个错误:Java . lang . nosuchmethode

  • 问题内容: 将方法标记为程序包专用类是否有所不同? 之间和此处的可见性是否有实际差异? 问题答案: 如果该类不会被另一个更可见的子类扩展,则唯一的区别是 intent的清晰度* 。将所有方法包都声明为私有,使以后的读者更加难以确定同一包中的其他类将调用哪些方法。 作为我的设计解决方案,这没有多大意义,但是从技术上来说还是有可能的。

  • 问题内容: 我当时正在上课,我想到了几个问题。 我注意到,其他类将使用的公共方法调用了一些私有方法来完成所有工作。现在,我知道OOD的原则之一就是尽可能多地私有化并隐藏所有实现细节。我不确定我是否完全理解其背后的逻辑。 我知道将字段设为私有很重要,以防止将无效值存储在字段中(这只是许多原因之一)。但是,对于私有方法,我不确定为什么它们如此重要。 例如,对于类,我们是否不能将所有实现代码都放入公共方

  • 我知道如何访问私有变量,但我正在尝试测试以下类: ProcessStatusResult: 在我的测试中,我需要在ProcessStatusBody中获取ProcessStatus来验证它,但我不知道如何做到这一点。 有没有一种方法可以使用反射(或其他方法)来访问它,而不必仅仅为了测试而在ProcessStatusResult中添加getter?

  • 本文向大家介绍具有公共文件访问权限集的Drupal私有文件下载,包括了具有公共文件访问权限集的Drupal私有文件下载的使用技巧和注意事项,需要的朋友参考一下 Drupal有两种允许用户下载文件的方式,它们是私有的和公共的。 在公开的情况下,任何人都可以打开文件,而Drupal则不参与下载过程。这意味着下载文件时不会记录任何统计信息或使用权限。每个文件均按名称引用。 私有文件访问意味着每次下载文件