Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何引用本地类_Java_Local Class - Fatal编程技术网

Java 如何引用本地类

Java 如何引用本地类,java,local-class,Java,Local Class,我有一个本地班 public class Outer { public void wrapper() { class Local { } } } Outer.wrapper.Local.class ## this doesn't seem to work 我有一个测试需要引用本地类 public class Outer { public void wrapper() { class Local { }

我有一个本地班

public class Outer {
    public void wrapper() {
        class Local {
        }
    }
}
Outer.wrapper.Local.class ## this doesn't seem to work
我有一个测试需要引用本地类

public class Outer {
    public void wrapper() {
        class Local {
        }
    }
}
Outer.wrapper.Local.class ## this doesn't seem to work

如何引用本地类?

您只能在声明本地内部类的方法中引用它:

public void wrapper() {
  class Local {

  }
  Local obj = new Local();
}

由于这些类的范围有限,它们往往不是很有用。如果您找到了一个有效的用例来定义一个,请看一看。

本地类(也称为本地内部类或方法本地内部类):

局部类定义为方法中的内部类。与局部变量一样,局部内部类声明在调用方法之前不存在,并且在方法返回时超出范围。这意味着只能从声明它的方法中创建它的实例

该内部类只能在其定义之后实例化(即,实例化代码必须遵循声明)。内部类不能访问方法的局部变量,除非这些变量是final或实际上是final

以下是一个例子:

int length = 10; // outer class's instance variable

public void calculate() {
    final int width = 20;
    class Inner { // inner class definition
        public void area() {
            System.out.println(length * width);
        }
    }
    Inner local = new Inner(); // this statement comes only after local class's definition
    local.area();
}
注意事项:

  • 唯一可以应用于本地内部类的方法的修饰符 是抽象的和最终的,但决不能两者同时存在
  • 静态方法中声明的本地类只能访问封闭类的静态成员,不能访问实例 变量

不要在函数中声明类。你不能。该类仅存在于函数的范围内。本地类的名称是:local。他们不能被转介outside@Lino“不能在外部使用”并不完全正确:您可以返回本地类的实例,然后执行。。。无论什么但是你不能用名字来引用那个类。@AndyTurner这就是我的真正意思,对不起。将注释更改为refreso本地类隐式
private
@nobar JLS 14.3。本地类声明禁止使用修饰符,因此编写
私有类本地
将触发编译错误。我认为它们是它们自己的特殊面包。@nobar不,它们是局部的:它们和局部变量一样可访问(例如,在同一个编译单元中,私有类是可访问的)。如果你想给它一个标签,那可能是“真正私有的”。根据“每个本地类声明语句都立即包含在一个块中”。使用这种措辞,我会说他们是私人的。但是“真正私有”听起来更好:)block private是我的想法——或者是封闭范围的私有,即块。这看起来像是从某个教程中复制粘贴的,它甚至没有回答如何从方法外部访问该本地类的问题。回答文章的内容不是来自教程。这是我自己为去年某个时候的JavaSE8认证考试准备的笔记。我用它通过了考试。答案显示了如何恰当地使用方法本地类,并考虑一些要点。OP有一个问题,我如何引用本地类?这篇文章的标题是如何引用本地类。我特别感兴趣的是从一个单独的测试类中引用本地类。如果我不清楚的话,很抱歉。@没有人可以从另一个类引用内部类;但不是本地类的方法。还有其他(非本地)类型的内部类要考虑——规则内部类或静态嵌套类。@ NoBar这里是Oracle java教程主题的链接。这有关于嵌套类的详细信息,通常是每种类型的。