首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中,我们可以调用没有对象的非静态类的方法吗?

在Java中,我们可以调用没有对象的非静态类的方法吗?
EN

Stack Overflow用户
提问于 2012-10-14 05:21:14
回答 4查看 2.1K关注 0票数 0

包装类Integer有一个静态方法parseInt(),它的用法如下:

代码语言:javascript
复制
Integer.parseInt();

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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-14 05:22:12

任何类都可以同时包含static和非静态方法。在调用任何类(包括您自己的类)上的static方法时,不需要实例化该类的实例,只需使用类名MyClass.methodName()调用方法即可。

事实上,即使是下面这些方法也会起作用:

代码语言:javascript
复制
Integer nullInt = null;
nullInt.parseInt("5");

这之所以有效,是因为在调用static方法时,只有引用的类类型很重要。但是考虑一下这种糟糕的风格:总是使用例如Integer.parseInt

还要注意,无论如何都不能将顶级类声明为static:只有嵌套/内部类才能声明为静态类。

票数 7
EN

Stack Overflow用户

发布于 2012-10-14 05:25:07

不,你错了。

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

票数 2
EN

Stack Overflow用户

发布于 2012-10-14 05:41:08

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12877100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档