如何将变量从一个java文件拉到另一个?

时间:2014-10-07 16:04:39

标签: java

我在学习java的早期阶段。

我目前有一个文件有900行代码,这不好。

我想将我的Java文件分成单独的java文件,我可以"链接" 以某种方式在一起。

我过去常常使用CSS工作,并且在@import中使用一些样式表非常容易。

是否有办法复制"从文件到另一个变量的所有变量,@ import方式?如果我有我的阵列" p"在单独的文件中定义,我可以将这个文件@import导入到我的主文件中,我可以尝试打印p,它会这样做吗?

提前多多感谢!

4 个答案:

答案 0 :(得分:2)

您无法将单个类拆分为多个不同的源文件。 Java中的每个源文件都只对应一个类。 (一个类可以包含它自己的内部类,但这在你的阶段是不必要的分心!)

您可以通过为其提供publicdefault访问修饰符来安排事情,以便其他类的成员可以看到某个类的成员。

请参阅In Java, difference between default, public, protected, and private

答案 1 :(得分:1)

您可能希望了解面向对象编程。 Oracle网站上有很多教程。 http://docs.oracle.com/javase/tutorial/java/javaOO/index.html

在您的情况下,您可以拆分类以将数组存储在一个类中,并从另一个类访问它。像这样:

这是包含数组的类:

public class ClassA
{
    public int [] arr = {1,2,3,4};

    public int [] getArr()
    {
        return arr;
    }
}

这是访问数组的类:

public class ClassB
{
    public void printArray(ClassA classB)
    {
        // access the array through a "getter" (recommended)
        System.out.println(Arrays.toString(classB.getArr()));

        // you can also access the array directly since it is a public variable
        System.out.println(Arrays.toString(classB.arr));
    }

    public static void main(String [] args)
    {
        ClassB a = new ClassB();
        ClassA b = new ClassA();
        a.printArray(b);
    }
}

如果您的类位于不同的包中,则在文件顶部包含一个import语句,如:

import packageName.ClassA;

答案 2 :(得分:1)

如果您认为它具有较低的内聚力,您可能需要考虑拆分该类。看看SOLID

此处列出的一些原则可能会帮助您将课程分解为更小的可管理的高度凝聚力的单元。

答案 3 :(得分:0)

我想你现在有类似的东西,一切都在一个大班上:

public class Main1 {
    private String street;
    private String city;

    public Main1(String street, String city) {
        this.street = street;
        this.city = city;
    }

    private void printAddress() {
        System.out.println(street);
        System.out.println(city);
    }

    public static void main(String[] args) {
        Main1 ex = new Main1("1 Main street", "Springfield");
        ex.printAddress();
    }
}

作为第一步,我会将你的类中的一些数据移到另一个类中,将数据组合在一起(在这种情况下它显然是一个地址),然后在原始类中引用该类,可能:

class Address {

    private String street;
    private String city;

    public Address(String street, String city) {
        this.street = street;
        this.city = city;
    }

    public String getCity() {
        return city;
    }

    public String getStreet() {
        return street;
    }
}

public class Main {

    private void printAddress(Address address) {
        System.out.println(address.getStreet());
        System.out.println(address.getCity());
    }

    public static void main(String[] args) {
        Main ex = new Main();
        Address address = new Address("1 Main street", "Springfield");
        ex.printAddress(address);
    }
}

之后您可能会注意到某些功能在逻辑上也可能属于您刚拔出的类,您可以在新类上提供方法来提供该功能:

class Address {

    private String street;
    private String city;

    public Address(String street, String city) {
        this.street = street;
        this.city = city;
    }

    public String formattedAddress() {
        return street + "\n" + city;
    }
}

public class Main {

    public static void main(String[] args) {
        Main ex = new Main();
        Address address = new Address("1 Main street", "Springfield");
        System.out.println(address.formattedAddress());
        //ex.printAddress(address);
    }
}