Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 用Point作为外部类对内部类进行编码_Java_Class_Inner Classes_Nested Class - Fatal编程技术网

Java 用Point作为外部类对内部类进行编码

Java 用Point作为外部类对内部类进行编码,java,class,inner-classes,nested-class,Java,Class,Inner Classes,Nested Class,对于赋值,我需要从java.awt.Point在类Point中创建一个类。我需要能够在为内部/嵌套类创建自己的变量时使用点方法。静态嵌套类和内部类之间的差异让我有点困惑,我不知道应该使用哪一个。我曾尝试使用静态嵌套类,但遇到一个错误,指出“此处不允许使用静态修饰符” 我的错误尝试: class Point { static class RobotJAW { int goldcollected, x, y; RobotJAW() {

对于赋值,我需要从java.awt.Point在类Point中创建一个类。我需要能够在为内部/嵌套类创建自己的变量时使用点方法。静态嵌套类和内部类之间的差异让我有点困惑,我不知道应该使用哪一个。我曾尝试使用静态嵌套类,但遇到一个错误,指出“此处不允许使用静态修饰符”

我的错误尝试:

class Point {
    static class RobotJAW {

        int goldcollected, x, y;

        RobotJAW() {
            goldcollected = 0;
            alive = true;
            x = 0;
            y = 0;
        }

    }
}

创建这个类的目的是让机器人搜索黄金和炸弹的区域,并在被炸弹摧毁时收集黄金。我只能使用JavaAPI中的Point和Scanner类。我需要使用点方法equals(obj)、move(intx,inty)、getLocation()和setLocation(intx,inty)。但我需要添加goldcollected和alive变量。另外,这是学校的作业,所以我想获得更多关于这门学科的知识和指导,而不需要别人的工作。

一堂关于内部课堂如何运作的课,然后一些人怀疑这才是你真正需要的。 内部类用于描述与另一个类具有极强的归属关系的类。如此强大的事实,以至于没有外部阶级它无法生存。如此强大,以至于你很少需要它。只能通过外部类的实例访问内部类:

public class A{
  public int value1;
  public class B{
    public int value2;
  }
}
...
A a1 = new A()
a1.value1 = 202
A.B b1 = new a1.B();
System.out.println(b1.value1); //Prints 202
A.B b2 = new B(); //Compiler error! Not allowed
静态内部类不是真正的内部类。它只是一个在内部类中定义的类


在我看来,你想要的是机器人下巴要么成为一个点,要么成为一个点。您不希望它是一个不可附着地包含在点中的对象。所以要么让RobotJaw扩展一个点,要么包含一个点。

一节关于内部类如何工作的课,然后一些人怀疑这是你真正需要的。 内部类用于描述与另一个类具有极强的归属关系的类。如此强大的事实,以至于没有外部阶级它无法生存。如此强大,以至于你很少需要它。只能通过外部类的实例访问内部类:

public class A{
  public int value1;
  public class B{
    public int value2;
  }
}
...
A a1 = new A()
a1.value1 = 202
A.B b1 = new a1.B();
System.out.println(b1.value1); //Prints 202
A.B b2 = new B(); //Compiler error! Not allowed
静态内部类不是真正的内部类。它只是一个在内部类中定义的类

在我看来,你想要的是机器人下巴要么成为一个点,要么成为一个点。您不希望它是一个不可附着地包含在点中的对象。所以要么让机器人下巴延伸一个点,要么包含一个点

对于赋值,我需要从java.awt.Point在类Point中创建一个类

只有在拥有外部类的源代码并且可以重新编译的情况下,才能在类内创建类。对于
java.awt.Point
,您不能这样做

如果你认为你的作业是在告诉你要这么做,那么你可能误解了作业的意思

当然,在
内创建嵌套类没有多大意义。顺便说一句,嵌套在点中的类所能做的(合理的)事情是非嵌套类所做不到的。也许作业要求你扩展
课程;i、 e.创建子类而不是嵌套类


(实际上,理论上可以做到这一点,但纯Java不行;例如

  • 您可以下载OpenJDK的源代码,将嵌套类添加到java.awt.Point并重新生成,但最终得到的不是java

  • 您可以使用字节码魔术为嵌套类构建一个类文件。如果您做对了,它将是可加载的,并且(我认为)它将能够访问外部类的私有方法和属性。但这不是纯Java

这两种方法都是彻头彻尾的坏主意,而且这几乎肯定不是你的任务要求你做的。)

对于赋值,我需要从java.awt.Point在类Point中创建一个类

只有在拥有外部类的源代码并且可以重新编译的情况下,才能在类内创建类。对于
java.awt.Point
,您不能这样做

如果你认为你的作业是在告诉你要这么做,那么你可能误解了作业的意思

当然,在
内创建嵌套类没有多大意义。顺便说一句,嵌套在点中的类所能做的(合理的)事情是非嵌套类所做不到的。也许作业要求你扩展
课程;i、 e.创建子类而不是嵌套类


(实际上,理论上可以做到这一点,但纯Java不行;例如

  • 您可以下载OpenJDK的源代码,将嵌套类添加到java.awt.Point并重新生成,但最终得到的不是java

  • 您可以使用字节码魔术为嵌套类构建一个类文件。如果您做对了,它将是可加载的,并且(我认为)它将能够访问外部类的私有方法和属性。但这不是纯Java


这两种方法都是糟糕透顶的主意,而且这几乎肯定不是你的任务期望你做的。)

如果RobotJAW的构造函数包含一个点,我还能添加我自己的变量并在对象上使用点方法吗?@user1043550如果它包含一个点,你可以添加一个.getLocation()方法返回该点,然后可以对其进行操作。当然,你可以添加任何你想添加到RobotJAW本身的东西,所以是的。如果RobotJAW的构造函数包含一个点,我是否仍然可以添加我自己的变量,并且仍然可以在对象上使用点方法?@user1043550如果它包含一个点,你可以添加一个返回点的.getLocation()方法,然后你就可以对其进行操作。当然你可以加上任何东西