2013-10-15 102 views
1

通过在另一个.java类中调用单独的.java类的变量,我遇到了一些问题。在另一个类中调用一个类的变量

我试图在Variables.java文件中声明Variables,并在另一个.java文件中使用相同的两个变量。但它不起作用。

Variables.java:

package de.cfe.base; 

public class Variables { 
    public static int int1; 
    public static int int2; 

} 

CallingTheVariables.java:

package de.cfe.base; 

public class CallingTheVariables { 
    public static void main(String[] args) { 
     int1 = 1; 
     int2 = 10; 
    } 
} 

回答

2

试试这个:

Variables.int1 = 1; 
Variables.int2 = 10; 

int1int2“属于”Variables,因此您只能通过Variables访问它们。

3

当你说只是int1int2时,Java假定它们已经在类中的范围内定义了。但它们没有在CallingTheVariables中定义。你必须与他们在定义上的类资格大家参考:

Variables.int1 = 1; 
Variables.int2 = 10; 

先进的替代方案是static import(在页面向下滚动)。在引用变量的类,把这个类以上:

import static de.cfe.base.Variables.*; 

然后,你可以参考他们的简单名称的变量,你有它已经:

int1 = 1; 
int2 = 10; 
+0

不推荐静态导入。从Java文档:*使用静态导入非常谨慎。过度使用静态导入会导致难以读取和维护的代码,因为代码的读者不知道哪个类定义了特定的静态对象。正确使用,静态导入可以通过删除类名重复来提高代码的可读性。* – Troubleshoot

+0

@Troubleshoot这是对任何引入静态导入的文本的一个很好的补充。诚然,误用时可能会造成混淆,但在这种情况下,对一个类执行一个静态导入应该没问题。 – rgettman

+0

在这种情况下,不需要使用静态导入。只有两个静态变量。 – Troubleshoot

0
public class CallingTheVariables { 
    public static void main(String[] args) { 
     Variables.int1 = 1; 
     Variables.int2 = 10; 
    } 
} 
0

试试下面:

Variables.int1 = 1; 
Variables.int2 = 10; 

,或者你可以做一个static import.

import static de.cfe.base.Variables.*; 

静态导入构造允许无限制地访问静态成员,而不从包含静态成员的类型继承。相反,程序进口的成员,无论是单独:

import static java.lang.Math.PI; 

或集体:

import static java.lang.Math.*; 

你应该什么时候使用静态导入?

非常谨慎!只有在您想要声明 常量的本地副本或滥用继承(常量 接口反模式)时才使用它。换句话说,当你需要经常访问来自一个或两个类的静态成员的 时使用它。如果 过度使用静态导入功能,则可能导致程序无法读取 ,并且无法维护,因此将导入其所有导入的静态 成员对其名称空间造成污染。你的代码的读者(包括你,在你写了几个月后 )不知道哪一类静态成员来自 。从类中导入所有的静态成员可能是 对可读性特别有害;

如果您只需要一个或两个成员,请单独导入它们。正确使用,静态导入可以使你的程序更具可读性,由 删除重复类名称的样板。

+0

不推荐静态进口。从Java文档:*使用静态导入非常谨慎。过度使用静态导入会导致难以读取和维护的代码,因为代码的读者不知道哪个类定义了特定的静态对象。如果使用得当,静态导入可以通过删除类名重复来提高代码的可读性。* – Troubleshoot

+0

@Troubleshoot'如果您只需要一个或两个成员,分别导入它们。正确使用,静态导入可以使你的程序更具可读性,通过删除重复类名称的样板文件。 – Trying

0

你必须正确地引用变量。使用

Variables.int1 = 1; 
Variables.int2 = 10; 

因为他们是静态的,或者如果你想创建它们的实例,消除其静态改性剂,然后用;

Variables v = new Variables(); 
v.int1 = 1; 
v.int2 = 10; 
相关问题