包装器类Integer
具有静态方法parseInt()
,其使用如下:
Integer.parseInt();
我认为只能像这样调用静态类的方法(即Class.doMethod()
)。所有非静态类都需要实例化对象才能使用它们的方法。
我检查了API,显然Integer
被声明为public final Integer
- 而非静态。
答案 0 :(得分:7)
任何类都可以包含static
和非静态方法。在任何类(包括您自己的类)上调用static
方法时,不需要实例化该类的实例,只需使用类名调用该方法:{{1} }。
事实上,即使以下情况也可行:
MyClass.methodName()
这是有效的,因为在调用Integer nullInt = null;
nullInt.parseInt("5");
方法时,只有引用的类类型很重要。但要考虑这种糟糕的风格:总是使用例如而是static
。
另请注意,无论如何都不能将顶级类声明为Integer.parseInt
:只能将嵌套/内部类声明为静态。
答案 1 :(得分:2)
不,你错了。
只能像这样调用静态方法,但它们可能属于“非静态”类。
答案 2 :(得分:2)
在java中,可以从对象调用静态方法,但这只会生成警告并仍然编译。 非静态类可以具有由所有实例共享的静态字段和方法(这就是为什么"共享"在VB.NET中意味着静态)。因此,从对象访问静态成员可能会使读者感到困惑,必须避免使用。
答案 3 :(得分:0)
一种表达它的方式:Integer
是一个具体的对象;你可以有很多Integer
个。只有一个Integer.MAX_VALUE
。
也就是说,有些事情Integer
是具体的,有些事情只需要存在一次,任何地方。