首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

不能将公共嵌套类用作私有方法参数

公共嵌套类是指在一个类的内部定义的另一个类,通常是作为内部类或嵌套类存在。私有方法参数是指只能在类内部访问的方法的参数。根据Java的语法规定,公共嵌套类不能用作私有方法的参数。

在Java中,嵌套类可以有不同的访问权限修饰符,包括public、protected、default和private。其中,public修饰符表示该类可以被任何类访问,protected表示该类可以被同一包内的类或继承该类的子类访问,default表示该类可以被同一包内的类访问(即没有访问修饰符),private表示该类只能被所在类内部访问。

由于私有方法只能在所在类内部访问,而公共嵌套类是对外可见的,所以不能将公共嵌套类用作私有方法的参数。如果需要在私有方法中使用嵌套类,可以考虑将嵌套类声明为私有,并将其定义在私有方法内部。

请注意,以上的回答是基于一般的Java语言规范,关于腾讯云相关产品和产品介绍链接地址的要求暂不支持提供。如果需要了解腾讯云的相关产品信息,请访问腾讯云官方网站或进行相关的搜索。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

scala 学习笔记(04) OOP(上)主从构造器私有属性伴生对象(单例静态)apply方法嵌套

,二是由于name前加了var,说明name:String不仅仅是构造器的参数,还是Person的一个属性成员,不过这个版本与第一个版本还是有些差别的,如果用JD-GUI反编译查看的话,会发现默认的无参构造器消失了...} }  注意:isOlder方法,该方法用于比较二个Person谁更年长,跟java不同的是,在Class定义范围内,可以直接访问另一个实例的私有成员!...输出结果: apply in Object People main constructor in Class People apply in Class People 四、内部类(也称嵌套) class...内部还可以再定义,即嵌套,与java不同的是,scala的嵌套是属于实例的,而不属于定义它的外部类。...这句话听着很绕,还是直接看代码吧,先把前面的People改造一下: class People(var name: String) { /** * 定义嵌套(注:必须写在最开始,好象也只能定义一个

90980

Swift基础 访问控制

例如,如果您定义文件私有,该类只能用作属性的类型,或在定义文件私有的源文件中用作函数参数或返回类型。 类型的访问控制级别也会影响该类型成员的默认访问级别(其属性、方法、初始化器和下标)。...例如,您不能使用私有类型作为具有内部访问级别的枚举的原始值类型。 嵌套类型 嵌套类型的访问级别与其包含类型相同,除非包含类型是公共的。在公共类型中定义的嵌套类型具有内部的自动访问级别。...如果您希望公共类型中的嵌套类型公开可用,则必须显式声明嵌套类型为公共类型。 子分类 您可以对可以在当前访问上下文中访问的任何进行子类,该类与子类在同一模块中定义。...重写可以使继承的成员比其超版本更容易访问。在下面的示例中,A是一个公共,其文件私有方法称为someMethod()。B是A的子类,访问级别为“内部”。...所需的初始化器必须具有与它所属相同的访问级别。 与函数和方法参数一样,初始化器参数的类型不能比初始化器自己的访问级别更私密。

14100

C#2.0新增功能02 泛型

C# 语言和公共语言运行时 (CLR) 的 2.0 版本中添加了泛型。...泛型将类型参数的概念引入 .NET Framework,这样就可以设计具有以下特征的方法:在客户端代码声明并初始化这些方法之前,这些方法会延迟指定一个或多个类型。...泛型定义  泛型是为所存储或使用的一个或多个类型具有占位符(类型形参)的、结构、接口和方法。 泛型集合可以将类型形参用作其存储的对象类型的占位符;类型形参呈现为其字段的类型和其方法参数类型。...泛型方法可将其类型形参用作其返回值的类型或用作其形参之一的类型。 以下代码举例说明了一个简单的泛型定义。...其使用方法如下: 在 AddHead 方法中作为方法参数的类型。 在 Node 嵌套中作为 Data 属性的返回类型。 在嵌套中作为私有成员 data 的类型。

69150

为啥 Java 中推荐将 Optional 当做参数使用?

一、背景 最近开发过程中,身边的同事为了实现逻辑复用,定义一个私有公共方法实现逻辑复用,定义函数签名时将上游的 Optional 作为参数传递。 IDEA 给出警告,但是并没有讲清楚为什么。...其实,这种场景本质上是希望将调用作参数传递下去,因此想到了直接使用 Supplier 或者 Function 等。...return null; } 这样 Optional 依然是作为返回值使用,参数方法调用 Supplier 也违规,又契合将调用传递的目的。...可以使用 guava 包里的 Optional替代。 三、结论 【建议】建议将 Optional 作为参数,容易造成空指针和误解,这和 Optional 的目的相违背。...【建议】建议将 Optional 作为属性,非要用建议使用 guava 包的 Optional

2.8K20

Getter & Setter:使用还是废弃

私有变量 为什么我们要使用私有的实例变量呢? 因为我们希望其他直接的依赖于这些变量。而且在心血来潮时,我们还可以灵活的修改变量类型和实现。...所有这些对于通过使用存取方法获取值的来说都是透明的。 是否要对所有的属性都是使用存取方法? 属性可以被声明为包级私有或是私有嵌套可见。...如果一个是包级私有或是私有嵌套可见,假设它的属性字段很好的描述了所提供的数据,那么对外暴露这些属性字段本质上是没有问题的。 这样的被限制在所声明的包内,同时调用代码受限于内部表示。...我们可以修改这个,而不用改变任何包外的代码。而且,对于私有嵌套,改动的范围进一步的被缩小到被嵌套里。 使用公共属性的另一个例子是JavaSpace 请求对象。...Ken Arnold讲述了他们决定使用公共属性,而不是带存取方法私有属性的经历(详情) 人们被告知不要使用公共属性,公共属性不好,有时这会让人们感觉不舒服,而且时常人们会使用不容置疑的语气来论述。

1.2K60

Java 接口的演变史

除此之外,接口中的所有方法都是公共的和抽象的。 接口中只有抽象方法,没有方法实现,这使得它可以用于类型的多重继承,同时仍然避免了多重继承的菱形问题。 可以继承接口的抽象方法或提供实现。...Java 5 中引入的泛型是关于类型参数的。我们有泛型、泛型接口和泛型方法,即。可以使用类型参数定义的、接口和方法。...因此,从 Java 5 开始,我们可以在接口中有六种类型的成员,使用静态常量、抽象方法嵌套嵌套接口、嵌套枚举和嵌套注释。...从 Java 9 开始,接口中支持的成员是静态常量、抽象方法、默认方法、静态方法私有方法嵌套嵌套接口、嵌套枚举和嵌套注解: // generic interface with one type...在 Java 8 之前,接口的核心原则是它只能具有公共和抽象方法。但是,从 Java 8 开始,接口也可以有非抽象方法,而 Java 9 以后的接口也可以有私有方法

70830

设计规则

由于公共构造函数用于创建类型的实例,但无法为抽象类型创建实例,因此具有公共构造函数的抽象在设计上是错误的。...CA1034:嵌套类型不应是可见的 嵌套类型是在另一个类型的范围中声明的类型。 嵌套类型用于封装包含类型的私有实现详细信息。 如果用于此用途,则嵌套类型不应是外部可见的。...应使用 sealed 修饰符标记希望被继承的类型,以免将其用作基类型。 CA1053:静态容器类型不应具有构造函数 公共嵌套公共类型只声明了静态成员,但具有公共或受保护的默认构造函数。...CA1061:不要隐藏基方法 如果派生方法参数签名只是在类型方面有所不同,而且与基方法参数签名中的对应类型相比,这些类型的派生方式更弱,则基类型中的方法由派生类型中的同名方法隐藏。...CA1062:验证公共方法参数 对于传递给外部可见方法的所有引用自变量,都应检查其是否为 null。

2K20

TMOS系统之NATS 和 SNAT

NAT 由公共 IP 地址到内部私有 IP 地址的一对一映射组成。...将私有源地址转换为公共地址 用户还可以使用 NAT 将内部节点的私有源 IP 地址转换为公共 IP 地址。这种翻译对接收流量的外部节点是隐藏的。...总而言之,NAT 提供了一个可路由的地址,用于向具有私有 IP 地址的节点发送数据包或从该节点发送数据包。 创建 NAT 时,用户只能将一个私有 IP 地址映射到特定的公共 IP 地址。...也就是说,NAT 始终表示私有 IP 地址和公共 IP 地址之间的一对一映射。如果要将多个私有 IP 地址(即多个内部节点)映射到单个公共 IP 地址,则可以创建一个 SNAT。...然后,外部目标主机可以在发送响应时将此公共地址用作目标地址。这样,内部节点的私有 IP 地址对外部主机保持隐藏。

1K60

框架设计原则和规范(二)

静态设计 1.5.1. 尽量少用静态 1.5.2. 不要用作杂物箱 1.5.3. 不要声明或覆盖静态中的实例成员 1.5.4....静态应该是密封的、抽象的,并且有一个私有的实例构造函数 1.6. 接口的设计 1.6.1. 如果想让一组类型支持一些公共的API,则定义接口 1.6.2....不要使用公共嵌套类型来做逻辑分组,而应该使用名字空间 1.9.3. 避免公开的暴露嵌套类型 1.9.4. 嵌套如果会被他的外层之外的引用,则不应该定义嵌套 1.9.5....如果嵌套会被客户代码来实例化,不应该设计嵌套 1.9.6. 不要把嵌套类型定义为接口的成员 1.10. 类型和程序集元数据 1.10.1....要用枚举,如果这样做会导致参数中有两个或以上的布尔类型 布尔类型难以被正确理解其含义 2.8.6.2. 除非百分百肯定绝对不需要两个以上的值,否则不要使用布尔参数 2.8.6.3.

1.4K50

内存、引用、封装、函数

内存内存分区模型代码区:存放函数体的二进制代码,由操作系统进行管理全局区:存放全局变量、静态变量和常量栈区:由编译器自动分配释放,存放函数的参数值、局部变量等堆区:由程序员分配释放,若程序员释放,程序结束时由操作系统回收内存分区意义...; b = 100; cout << "a=" << a << endl;//100 cout << "b=" << b << endl;//100 return 0;}引用引<em>用作</em>函数<em>参数</em>作用...函数重载作用:函数名可以相同,提高复用性函数重载满足条件:函数声明和函数实现,只能有一个有默认<em>参数</em>同一作用域下函数名称相同函数<em>参数</em>类型不同,或者个数不同,或者顺序不同注意事项引<em>用作</em>为重载的条件//引<em>用作</em>为重载的条件...cout << a.c() << endl;//62.8 return 0;}访问权限将属性和行为加以权限控制public<em>公共</em>权限:成员 <em>类</em>内可以访问,<em>类</em>外可以访问protected保护权限:成员...<em>类</em>内可以访问,<em>类</em>外不可访问,儿子可以访问父亲中的保护内容private<em>私有</em>权限:成员 <em>类</em>内可以访问,<em>类</em>外不可访问,儿子不可以访问父亲中的<em>私有</em>内容struct与class区别在C++中struct与class

75300

如何避免自己写的代码成为别人眼中的一坨屎

api需要添加注释,其它代码谨慎使用注释; 典型的烂注释: 恰当的信息; 废弃的注释; 冗余注释; 糟糕的注释; 注释掉的代码; 唯一真正好的注释是你想办法不去写的注释: 不要有循规式注释,比如setter...; 函数的锁进层次不应该多于两层; 一个函数只做一件事,一个函数不应该能抽象出另外一个函数; 某个公共函数调用的私有函数紧随其后; 最理想的参数是零参数,最长不要超过三个入参,尽量不要输出参数: 如果函数传入三个及以上参数最好将其抽象为...; 不要继承常量,比如接口中定义常量,不要使用继承欺骗编程语言的作用范围规则; 模块不应了解它所操作对象的内部情况; DTO(Data Transfer Objects)是一个只有公共变量没有函数的;...不要使用“尤达表示法” 如 if(null == obj),现代编译器对if(obj = null)这样的代码会给出警告; 一般情况使用if else,简单语句使用三目运算符; 通常来讲提早返回可以减少嵌套并让代码整洁...),应该依赖于抽象而不是依赖于具体细节; 中的方法越少越好,函数知道的变量越少越好,拥有的实体变量越少越好; 通过减少变量的数量和让他们尽量“轻量级”来让代码更有可读性: 减少变量; 缩小变量的作用域

7312118

Effective Java(第三版)——条目十五:使和成员的可访问性最小化

对于顶层(非嵌套的)和接口,只有两个可能的访问级别:包级私有(package-private)和公共的(public)。...如果一个包级私有顶级或接口只被一个使用,那么可以考虑这个作为使用它的唯一私有静态嵌套(条目 24)。这将它的可访问性从包级的所有减少到使用它的一个。...但是,减少不必要的公共的可访问性要比包级私有的顶级更重要:公共是包的API的一部分,而包级私有的顶级已经是这个包实现的一部分了。...对于成员(属性、方法嵌套嵌套接口),有四种可能的访问级别,在这里,按照可访问性从小到大列出: private——该成员只能在声明它的顶级内访问。...在仔细设计你的公共API之后,你的反应应该是让所有其他成员设计为私有的。 只有当同一个包中的其他真的需要访问成员时,需要删除私有修饰符,从而使成员包成为包级私有的。

92840

代码质量规则

由于公共构造函数用于创建类型的实例,但无法为抽象类型创建实例,因此具有公共构造函数的抽象在设计上是错误的。...CA1034:嵌套类型不应是可见的 嵌套类型是在另一个类型的范围中声明的类型。 嵌套类型用于封装包含类型的私有实现详细信息。 如果用于此用途,则嵌套类型不应是外部可见的。...应使用 sealed 修饰符标记希望被继承的类型,以免将其用作基类型。 CA1053:静态容器类型不应具有构造函数 公共嵌套公共类型只声明了静态成员,但具有公共或受保护的默认构造函数。...CA2119:密封满足私有接口的方法 可继承的公共类型为 internal(在 Visual Basic 中为 Friend)接口提供可重写的方法实现。...对于密封,请使构造函数成为私有;否则,请使构造函数成为受保护。

2.1K30

JavaScript权威指南 - 函数

//一.函数语句: //打印对象所有属性名称和值。...function uniqueInteger() { return uniqueInteger.counter+=1; } 闭包可捕捉到单个函数调用的局部变量,并将这些局部变量用作私有状态,故我们可以利用闭包的特性来重写...像counter一样的私有变量在多个嵌套函数中都可以访问到它,因为这多个嵌套函数都共享同一个作用域链,看下面一段代码: function counter() { var n = 0; return...当将函数用作构造函数的时候,新创建的对象会从原型对象上继承属性。 call()方法和apply()方法 上文提到,这两个方法可以用来间接调用函数。...func.call(obj, 1, 2); //实参可以为任意数量 func.apply(obj, [1, 2]); //实参都放在了一个数组中 下面看一个有意思的函数,他能将一个对象的方法替换为一个新方法

2.9K30

java(4)-深入理解java嵌套、内部类以及内部类builder构建构造函数六、使用 builder 模式解决构造方法参数过多的情况

一、什么是嵌套及内部类   可以在一个的内部定义另一个,这种类称为嵌套(nested classes),它有两种类型:静态嵌套和非静态嵌套。...静态嵌套使用很少,最重要的是非静态嵌套,也即是被称作为内部类(inner)。嵌套从JDK1.1开始引入。...使用嵌套的好处: 嵌套可以访问外部类的所有数据成员和方法,即使它是私有的。 提高可读性和可维护性:因为如果一个只对另外一个可用,那么将它们放在一起,这更便于理解和维护。...提高封装性:给定两个A和B,如果需要访问A中的私有成员,则可以将B封装在A中,这样不仅可以使得B可以访问A中的私有成员,并且可以在外部隐藏B本身。 减少代码的编写量。...客户端直接调用所需的对象,而是调用构造方法 (或静态工厂),并使用所有必需的参数,并获得一个 builder 对象。

1.5K10

如何避免自己写的代码成为别人眼中的一坨屎!

api需要添加注释,其它代码谨慎使用注释; 典型的烂注释: 恰当的信息; 废弃的注释; 冗余注释; 糟糕的注释; 注释掉的代码; 唯一真正好的注释是你想办法不去写的注释: 不要有循规式注释,比如setter...; 函数的锁进层次不应该多于两层; 一个函数只做一件事,一个函数不应该能抽象出另外一个函数; 某个公共函数调用的私有函数紧随其后; 最理想的参数是零参数,最长不要超过三个入参,尽量不要输出参数: 如果函数传入三个及以上参数最好将其抽象为...; 不要继承常量,比如接口中定义常量,不要使用继承欺骗编程语言的作用范围规则; 模块不应了解它所操作对象的内部情况; DTO(Data Transfer Objects)是一个只有公共变量没有函数的;...不要使用“尤达表示法” 如 if(null == obj),现代编译器对if(obj = null)这样的代码会给出警告; 一般情况使用if else,简单语句使用三目运算符; 通常来讲提早返回可以减少嵌套并让代码整洁...),应该依赖于抽象而不是依赖于具体细节; 中的方法越少越好,函数知道的变量越少越好,拥有的实体变量越少越好; 通过减少变量的数量和让他们尽量“轻量级”来让代码更有可读性: 减少变量; 缩小变量的作用域

52720

如何避免自己写的代码成为别人眼中的一坨屎!

api需要添加注释,其它代码谨慎使用注释; 典型的烂注释: 恰当的信息; 废弃的注释; 冗余注释; 糟糕的注释; 注释掉的代码; 唯一真正好的注释是你想办法不去写的注释: 不要有循规式注释,比如setter...; 函数的锁进层次不应该多于两层; 一个函数只做一件事,一个函数不应该能抽象出另外一个函数; 某个公共函数调用的私有函数紧随其后; 最理想的参数是零参数,最长不要超过三个入参,尽量不要输出参数: 如果函数传入三个及以上参数最好将其抽象为...; 不要继承常量,比如接口中定义常量,不要使用继承欺骗编程语言的作用范围规则; 模块不应了解它所操作对象的内部情况; DTO(Data Transfer Objects)是一个只有公共变量没有函数的;...不要使用“尤达表示法” 如 if(null == obj),现代编译器对if(obj = null)这样的代码会给出警告; 一般情况使用if else,简单语句使用三目运算符; 通常来讲提早返回可以减少嵌套并让代码整洁...),应该依赖于抽象而不是依赖于具体细节; 中的方法越少越好,函数知道的变量越少越好,拥有的实体变量越少越好; 通过减少变量的数量和让他们尽量“轻量级”来让代码更有可读性: 减少变量; 缩小变量的作用域

63770
领券