【Java内部类】教程文章相关的互联网学习教程文章

Java内部类及其实例化

在 Java 中,允许在一个类(或方法、语句块)的内部定义另一个类,称为内部类(Inner Class),有时也称为嵌套类(Nested Class)。 内部类和外层封装它的类之间存在逻辑上的所属关系,一般只用在定义它的类或语句块之内,实现一些没有通用意义的功能逻辑,在外部引用它时必须给出完整的名称。 使用内部类的主要原因有: 内部类可以访问外部类中的数据,包括私有的数据。 内部类可以对同一个包中的其他类隐藏起来。 当想要定义一个回调...

Java静态内部类、匿名内部类、成员式内部类和局部内部类

内部类可以是静态(static)的,可以使用 public、protected 和 private 访问控制符,而外部类只能使用 public,或者默认。 成员式内部类 在外部类内部直接定义(不在方法内部或代码块内部)的类就是成员式内部类,它可以直接使用外部类的所有变量和方法,即使是 private 的。外部类要想访问内部类的成员变量和方法,则需要通过内部类的对象来获取。 请看下面的代码: public class Outer{ private int size; public class Inner { p...

Java---- 静态内部类与非静态内部类的区别

静态类(只有内部类才能被声明为静态类,即静态内部类)1.只能在内部类中定义静态类 2.静态内部类与外层类绑定,即使没有创建外层类的对象,它一样存在。 3.静态类的方法可以是静态的方法也可以是非静态的方法,静态的方法可以在外层通过静态类调用,而非静态的方法必须要创建类的对象之后才能调用。 5.只能引用外部类的static成员变量(也就是类变量)。 6.如果一个内部类不是被定义成静态内部类,那么在定义成员变量或者成员方法...

Java基础教程:内部类【图】

Java基础教程:内部类 内部类内部类,是指在一个类的内部定义的类。就像下面这样:public class EnclosingClass { . . . public class NestedClass { . . . } }内部类拥有访问外部类所有元素(包括private、static)的访问权。当某个外部类的对象创建了一个内部类对象时,此内部类对象必定会秘密地捕获一个指向那个外围类对象的引用。然后,在你访问此外围类的成员时,就是用那个引用来选择外围类的成员。内部类是个编译...

java – 在“Concurrency in Practice”的7.15版本中,内部类和外部类如何在“this”上同步?【代码】

public class LogService {private final BlockingQueue<String> queue;private final LoggerThread loggerThread;private final PrintWriter writer;@GuardedBy("this") private boolean isShutdown;@GuardedBy("this") private int reservations;public void start() { loggerThread.start(); }public void stop() {synchronized (this) { isShutdown = true; }loggerThread.interrupt();}public void log(String msg) throws In...

java – 从内部类中访问变量(dialogView),需要声明final【代码】

我正在尝试创建一个带有布局“是”或“否”的警告对话框.我想通过单击“否”按钮但是对话框View.dismiss()来关闭对话框;有错误. 这是我的代码.private void showCancelOrderDialog() {AlertDialog.Builder builder = new AlertDialog.Builder(context);LayoutInflater inflater = this.getLayoutInflater();View dialogView = inflater.inflate(R.layout.dialog_details_cancel_order, null);builder.setView(dialogView);Foregrou...

Java反射:如何检索匿名内部类?

我在另一个类(SomeClass)中有一个匿名内部类. SomeClass.class.getClasses()和SomeClass.class.getDeclaredClasses()都返回空数组. 我在Class’Javadocs中找不到一些关于此的提示. 可以通过某种方式使用反射检索匿名内部类吗? 匿名内部类和普通内部类之间还有什么显着差异?解决方法:如果它使用反射,那可能是一个非常糟糕的主意.抛开这一点,我相信你可以在运行时添加其他内部类,因此列出可能尚未考虑过的类是没有意义的.我想,列出...

死磕Java内部类【代码】【图】

Java内部类,相信大家都用过,但是多数同学可能对它了解的并不深入,只是靠记忆来完成日常工作,却不能融会贯通,遇到奇葩问题更是难以有思路去解决。这篇文章带大家一起死磕Java内部类的方方面面。 友情提示:这篇文章的讨论基于JDK版本 1.8.0_191开篇问题 我一直觉得技术是工具,是一定要落地的,要切实解决某些问题的,所以我们通过先抛出问题,然后解决这些问题,在这个过程中来加深理解,最容易有收获。 so,先抛出几个问题。...

java – 为什么编译时间常量允许在非静态内部类中变为静态?【代码】

假设我们有如下代码.public class Outer{class Inner{public static final String s = "abc";}static class Nested{public static final SomeOtherClass instance = new SomeOtherClass();} } 我理解要实例化非静态内部类的对象,需要外部类的对象. static表示与类相关,为了访问它,不需要实例化对象.非静态内部类只能在我们实例化外部类的对象后才能使用.在其中包含任何静态引用可能没有意义. 我的问题: >非静态内部类可以在没有任...

java内部类的文件名太长了【代码】

我正在将某些语言的程序翻译成嵌套的java类.在某些时候,嵌套的程度变得如此之深以至于我得到: 编译Test.javaTest.java:5179:写错误:测试$2 … $1.class(文件名太长) 其中……是一个长串. 我正在使用ext3文件系统,因此我限制为256个字符长的文件名.此外,我想暂时继续使用这种翻译方法(对内部类),因为我更感兴趣的是测试执行闭包转换的语言,这将解决问题.是否有一种快速的方法来绕过这个? (使用不同的文件系统或告诉javac生成不同...

java – 匿名类变成了内部类【代码】

我被要求将匿名按钮类转换为内部按钮类.我给读的文本使用包含ActonListener的示例讨论了这个主题.但是,我要求修改的代码中没有ActonListener.所以我很难遵循我应该做的事情.如何使用以下代码并将匿名转换为内部类.我的按钮代码甚至还有一个匿名类吗? 警告:不要只为我打个答案.我需要学习这个.请指点我正确的方向. 这是我的代码:package ui.panels;import java.awt.Panel;import interfaces.Resettable; import model.Model; imp...

java – 在父类中调用匿名内部类的方法【代码】

关于Anonymous内心阶级的冲浪,我对此产生了疑问 这是我下载的Original代码并正在解决它(请参阅下面的代码仅用于我的问题). 根据上面的链接,他们说我们不能超载&在Anonymous Inner类中添加其他方法. 但是当我编译下面的它工作正常,虽然我无法在Inner类之外调用那些公共方法. 最初我很惊讶为什么我无法访问Inner类之外的公共方法,但后来我意识到Object被“父”类引用所持有,它不知道这样的函数调用. 我可以在下面的代码中进行哪些更改...

在java中放置内部类的惯例是什么?【代码】

我有一个名为Util的实用程序类.在其中我有一个MatrixUtil静态内部类(以及其他).根据惯例,内部类别在哪里? MatrixUtil应该在Util字段之后但在Util方法之前吗?我无法在此找到java约定.也许我在API中错过了它… 无论如何,这是我正在谈论的结构.public class Util {public static final Vector3f myField;public static class MatrixUtil{public static void myMatrixUtilMethod(){return;}}public static float myUtilMethod(){retu...

java – 方法中定义的内部类要求在方法中声明的变量是final的,如果它们是从内部类中访问的那么【代码】

参见英文答案 > Why are only final variables accessible in anonymous class? 13个以下代码定义方法中的类.final class OuterClass {private String outerString = "String in outer class.";public void instantiate(){final String localString = "String in method."; // final is mandatory.final class InnerClass{String innerString = localString;public void show(){System.out.pri...

JAVA基础(内部类)【图】

1,内部类概述java内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类 。 2,内部类访问特点内部类可以直接访问外部类的成员,包括私有。外部类要访问内部类的成员,必须创建对象。外部类名.内部类名 对象名 = 外部类对象.内部类对象;案例class Demo1_InnerClass {????public static void main(String[] args) {????????//Inner i = new Inner();????????//i.method();????????//外部类名.内部类名 = 外部类对象.内部类...