0

包装类Integer具有静态方法parseInt(),使用如下:

Integer.parseInt();

我认为只有静态类的方法可以这样调用(即Class.doMethod())。所有非静态类都需要实例化对象才能使用它们的方法。

我检查了 API,显然Integer被声明为public final Integer- 不是静态的。

4

4 回答 4

7

任何类都可以同时包含static非静态方法。当调用static任何类的方法时——包括你自己的——你不需要实例化类的实例,只需使用类名调用方法:MyClass.methodName().

事实上,即使以下方法也可以:

Integer nullInt = null;
nullInt.parseInt("5");

这是因为在调用方法时只有引用的类类型很重要。static但是考虑一下这种糟糕的风格:总是使用 egInteger.parseInt代替。

另请注意,无论如何您都不能声明顶级类static:只有嵌套/内部类可以声明为静态类。

于 2012-10-13T21:22:11.853 回答
2

不,你错了。

只有静态方法可以这样调用,但它们可能属于“非静态”类。

于 2012-10-13T21:25:07.210 回答
2

在 java 中,可以从对象调用静态方法,但这只会产生警告并且仍然可以编译。非静态类可以具有所有实例共享的静态字段和方法(这就是为什么“共享”在 VB.NET 中意味着静态)。因此,从对象访问静态成员可能会使读者感到困惑,因此必须避免。

于 2012-10-13T21:41:08.430 回答
0

一种表达方式: AnInteger是一个具体的对象;你可以有很多Integers。只有一个Integer.MAX_VALUE

也就是说,有些东西带有Integers 是具体的,而有些东西只需要存在一次,任何地方。

于 2012-10-13T21:25:08.330 回答