2013-09-16 46 views
2

我最近从在PHP中工作转换为Java并有查询。想强调我是Java的初学者。从另一个Java类调用静态方法

基本上我在文件A(与类A)中工作,并且想要引用保存在文件B(类B)中的静态方法。在使用A类时,是否需要对文件B进行任何引用? (我正在考虑PHP中的require_once)我在A类中的代码如下:

Public class A{ 
String[] lists = B.staticMethod(); 
} 

Eclipse没有将B识别为类。我是否需要创建一个B的实例才能访问静态方法。感觉像我真的俯视一些东西,并会欣赏任何输入。

+1

这些类是否位于不同的包中?如果是,那么你需要在'A'类中导入'B'类。 –

+1

静态方法不需要实例。一切看起来都很好,但'public'关键字应该以小写字母'p'开头。如果'B'在另一个包中,则需要添加一个导入语句:'import package_of_B.B;' – RaptorDotCpp

回答

11

确保您有正确的访问B.staticMethod。也许它声明为

public static String[] staticMethod() { 
    //code 
} 

此外,您还需要导入B级

import foo.bar.B; // use fully qualified path foo.bar.B 

public class A { 
    String[] lists = B.staticMethod(); 
} 
1

你并不需要创建类的实例调用静态方法,但是你需要导入班上。

package foo; 

//assuming B is in same package 
import foo.B; 

Public class A{ 
    String[] lists = B.staticMethod(); 
} 
1

Java的类加载机制与PHP的自动加载器类似。这意味着你不需要像includerequire函数那样的任何东西:只要你使用的类在“类路径”上就可以找到它们。有人会说你必须用import statement。这不是真的; import什么都不做,只是给你提供一种用短名称来引用类的方法,这样你就不必每次重复包名。

例如,在与ArrayListDate类可以这样写工作的程序代码:

java.util.ArrayList<java.util.Date> list = new java.util.ArrayList<>(); 
list.add(new java.util.Date()); 

重复包名获得劳累后一段时间,所以我们可以用import告诉编译器我们想通过它们的短名称来提及这些类:

import java.util.*; 
.... 
ArrayList<Date> list = new ArrayList<>(); 
list.add(new Date()); 
相关问题