Как я могу сделать копию ранее существующего объекта (например, конструктора), чтобы получить доступ к данным, не делая их stati c? - PullRequest
0 голосов
/ 25 апреля 2020

Я новичок в java, поэтому любая помощь приветствуется и ценится. Как я могу создать тот же экземпляр класса с уже сохраненной переменной / данными, которые были установлены? Таким образом, я могу вызвать геттер для получения значений. Я пытаюсь получить данные, которые были установлены из основной функции, а затем воссоздать тот же экземпляр, чтобы я мог использовать данные в другом классе.

Где я пытаюсь сделать копию экземпляра

    package com.finalproject;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionListener;
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.awt.event.*;
    import java.awt.Color;
    import javax.swing.ImageIcon;
    public class GUIP1
    {

        public static void gameBoardP1()     {

              ClassLoader classLoader = BoatsP1.class.getClassLoader();
              try
              {
                  Class cls = classLoader.loadClass("com.finalproject.BoatsP1");
                  System.out.println("cls.getName() = "+ cls.getName());
              }
              catch (ClassNotFoundException ex)
              {
                  System.out.println(ex.toString());
              }
              JFrame frame = new JFrame("Battleship");
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              frame.setSize(1000,1000);
              frame.setVisible(true);
              frame.setTitle("Battleship Player 1");
              System.out.println(BoatsP1.getLocation1());
              JPanel panel = new JPanel(new GridLayout(10,10,10,10));
              for(int i=1; i<=100; i++)
              {
                  JButton btn = new JButton("" +i);
                  btn.setPreferredSize(new Dimension(40,40));
                  {
                      btn.setIcon(new ImageIcon("C:\\Users\\User\\Desktop\\v2\\CSCI24000_spring2020_A9- 
     master\\Ship.jpg"));
                  }
                  panel.add(btn);

Класс, из которого мне нужно скопировать экземпляр:

    package com.finalproject;
    public class BoatsP1
    {
        // instance variables
        private String type;
        private boolean alive;
        private String location1;
        private String location2;
        private String location3;
        private String location4;
        private String location5;
        private String location6;

        public BoatsP1(String type)//, boolean alive)
        {
            this.type = type;
        }
        public String getType()
        {
            return type;
        }
        public void setAlive(boolean var)
        {
            var = alive;
        }
        public String getLocation1()
        {
            return location1;
        }
        public void setLocation1(String loc1)
        {
            location1 = loc1;
        }
        public String getLocation2()
        {
            return location2;
        }
        public void setLocation2(String loc2)
        {
            location2 = loc2;
        }
        public String getLocation3()
        {
            return location3;
        }
        public void setLocation3(String loc3)
        {
            location3 = loc3;
        }
        public String getLocation4()
        {
            return location4;
        }
        public void setLocation4(String loc4)
        {
            location4 = loc4;
        }
        public String getLocation5()
        {
            return location5;
        }
        public void setLocation5(String loc5)
        {
            location5 = loc5;
        }   
        public String getLocation6()
        {
            return location6;
        }
        public void setLocation6(String loc6)
        {
            location6 = loc6;
        }
        public void setHealth(boolean Health)
        {
            alive = Health;
        }
    } 

Это где я беру ввод от пользователя и использование сеттеров для отправки данных обратно в класс:

     System.out.println("Player 1");
                        System.out.println("Player 1 has chosen one Battleship, please enter the value of 
     two tiles that are vertical or horizontal of each other");
                        System.out.println("Enter first value of your size 2 boat");
                        Scanner x = new Scanner(System.in);
                        String tinyloc1 = x.nextLine();           
                        System.out.println("Enter 2nd and final value of your size 2 boat");
                        Scanner y = new Scanner(System.in);
                        String tinyloc2 = y.nextLine();

Спасибо!

...