从另一个类在主类中实例化的访问对象

时间:2014-09-15 23:32:24

标签: java oop object constructor instantiation

我有A班,我的主要班级。在这个类中,我创建了一个B类classB B = new B(parameters);的实例,并使用classB.method来调用它来访问类B中的方法和数据。我还有C类需要使用B类中的方法和数据,但是我无法弄清楚如何通过创建的对象类A来访问它,因为classB还没有在编译时创建,我无法重新实例化它或者我当我在A类中实例化它时,丢失我加载到它的数据。

如何绕过这个并从我的C类构造函数中访问classB

A类的一些代码:

final private static String[] imageLocations = {"wall.png", "floor.png", "char.png"}; //Stores initial image locations

public static void main(String[] args) {
        images = new LoadImages(imageLocations);
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                (new Thread(new BomberMan())).start();
            }
        });
    }

B类的一些代码:

public class LoadImages {
     private Image[] imageArray;

     public LoadImages(String[] args){
         imageArray = new Image[args.length];
         for(int i = 0; i<args.length; i++){
             imageLoader(args[i], i);
         }
     }

     private boolean imageLoader(String imageAddress, int index){
         try{
             imageArray[index] = ImageIO.read(new File(imageAddress));
             return true;
         }catch(IOException ex){
             System.out.println("PICTURE LOADING ERROR");
             return false;
         }
     }

     public Image returnImage(int index){
         return imageArray[index];
     }

     public Image scaleImage(Image image, int width, int height){
         return(image.getScaledInstance(width, height, Image.SCALE_FAST));
     }
}

C类代码(目前还没有)

public class Block {
    int blockID;
    int playerID;
    Image image; 

    public Block(int blockID){
        this.blockID = blockID;
        this.image = loadImages.returnImage(blockID); //Doesn't work
    }
}

0 个答案:

没有答案