Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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 classA扩展了classB,如何在classA中拥有classB中的对象_Java - Fatal编程技术网

Java classA扩展了classB,如何在classA中拥有classB中的对象

Java classA扩展了classB,如何在classA中拥有classB中的对象,java,Java,我有这门课: public class Gradient extends Item<GradientRep> { /** * Initializes a new Gradient * @param x X-coordinate of the Item * @param y Y-coordinate of the Item * @param value The value of the gradient */ pub

我有这门课:

public class Gradient extends Item<GradientRep> {

    /**
     * Initializes a new Gradient
     * @param x X-coordinate of the Item
     * @param y Y-coordinate of the Item
     * @param value The value of the gradient
     */

    public Gradient(int x, int y, int value, String type) {
        super(x, y);
        this.value = value;
        this.type = type;
    }

     ....
有没有一个明显的方法可以做到这一点


为了提供一些背景,现在类渐变只代表地图上的一个固定点,这不是我们想要的渐变。所以,我想传播这个梯度,因此当我实例化一个梯度时,我想让它提供其他项目(地图上的坐标不同,这是由类项目处理的)。

我不完全确定你在追求什么-但是你可以像这样实例化梯度中的项目:

import java.util.ArrayList;

public class Gradient extends Item<GradientRep> {

    private final int value;
    private final String type;
    
    private ArrayList<Item<GradientRep>> items = new ArrayList<>();

    /**
     * Initializes a new Gradient
     *
     * @param x     X-coordinate of the Item
     * @param y     Y-coordinate of the Item
     * @param value The value of the gradient
     */
    public Gradient(int x, int y, int value, String type) {
        super(x, y);
        this.value = value;
        this.type = type;
    }

    Item<GradientRep> getItem() {
        return new Item<>(x, y);
    }
}
import java.util.ArrayList;
公共类梯度扩展项{
私有最终整数值;
私有最终字符串类型;
private ArrayList items=new ArrayList();
/**
*初始化新的渐变
*
*@param x项目的x坐标
*@项目的参数y坐标
*@param value渐变的值
*/
公共渐变(int x、int y、int值、字符串类型){
super(x,y);
这个值=值;
this.type=type;
}
项目getItem(){
返回新项目(x,y);
}
}

Gradient对象将是一个项目,将项目存储在
items
ArrayList(或您选择的ADT)中,并可以使用
getItem
方法生成新的
item
对象。

您也可以通过以下方式完成:

public class Gradient extends Item<GradientRep> {
        Item myItem;
        /**
         * Initializes a new Gradient
         * @param x X-coordinate of the Item
         * @param y Y-coordinate of the Item
         * @param value The value of the gradient
         */
    
        public Gradient(int x, int y, int value, String type) {
            super(x, y);
            this.value = value;
            this.type = type;
            myItem = new Item();
        }
公共类渐变扩展项{
项目myItem;
/**
*初始化新的渐变
*@param x项目的x坐标
*@项目的参数y坐标
*@param value渐变的值
*/
公共渐变(int x、int y、int值、字符串类型){
super(x,y);
这个值=值;
this.type=type;
myItem=新项目();
}
您可以通过gradient.myItem


如果将字段设置为静态,则使用渐变。myItem

是否尝试将Item类型的变量添加到渐变?我真的不知道问题出在哪里。这是否回答了您的问题?谢谢,实际上我不需要GradientRep类型的项,我可以只执行Item getItem()吗{…等等?很抱歉,我没有指定Item类是抽象的,我想基于x和y的值在Gradient类中创建Items对象(例如创建一个Item(x+1,y+2),并且在Gradient类实例化后能够访问它)如果
类是抽象的,则不能实例化
对象。如果希望对象“类似”项,则需要使
不抽象,或者创建
的另一个子项。可能类似于:
公共类扩展项{
是的,你可以直接使用
,不过如果可以的话,我会避免使用。
public class Gradient extends Item<GradientRep> {
        Item myItem;
        /**
         * Initializes a new Gradient
         * @param x X-coordinate of the Item
         * @param y Y-coordinate of the Item
         * @param value The value of the gradient
         */
    
        public Gradient(int x, int y, int value, String type) {
            super(x, y);
            this.value = value;
            this.type = type;
            myItem = new Item();
        }