我在工具类里面创建了File的实例,别的类调用这个对象的时候为什么一定用静态来修饰它呢?

public class IoTool {

 public static File file=new File("hello.txt");

 public int len=0;

}

InputStream inputStream=new FileInputStream(**IoTool.file**);

假如我不在file这个实例前面加static的话 就会报错 说Cannot make a static reference to the non-static field IoTool.file

IoTool.file,这种通过类名直接访问的必须是静态

Cannot make a static reference to the non-static field IoTool.file 如你给出的英文已经说明问题,想要直接使用类名调用对应的资源或者方法, 说明这些资源或者方法是属于类本身的,不随类生成的对象不同而发生变化,即按照java语言规定,对应的资源或者方法必须使用statis修饰。

如果是一个类调用其他的类里面的 属性 比如 a 类调用 b类的 hello方法 那么这个hello就需要static 来修饰 ,如果说实在同一个类中调用只要不是main方法就不需要static修饰

直接通过类名访问成员变量或方法,则其必须是静态的,就像楼上说的那样!

public静态方法就可以通过类名.方法直接访问这个方法了,而不需要先new这个类

干嘛这样写啊,直接写到静态方法中返回好一些吧!个人建议

想要使用类名.属性或者类名.方法,该属性或者方法必须被static修饰.

直接通过类名访问成员变量或方法,则其必须是静态的,就像楼上说的那样!

如果是一个类调用其他的类里面的 属性 比如 a 类调用 b类的 hello方法 那么这个hello就需要static 来修饰 ,如果说实在同一个类中调用只要不是main方法就不需要static修饰

你看看你的定义,不就是个静态的file实例么? 那你还想怎么访问