包装类Integer有一个静态方法parseInt(),它的用法如下:
Integer.parseInt();我认为只有静态类的方法可以这样调用(即Class.doMethod())。所有非静态类都需要实例化对象才能使用它们的方法。
我检查了API,显然Integer被声明为public final Integer --而不是静态的。
发布于 2012-10-14 05:22:12
任何类都可以同时包含static和非静态方法。在调用任何类(包括您自己的类)上的static方法时,不需要实例化该类的实例,只需使用类名MyClass.methodName()调用方法即可。
事实上,即使是下面这些方法也会起作用:
Integer nullInt = null;
nullInt.parseInt("5");这之所以有效,是因为在调用static方法时,只有引用的类类型很重要。但是考虑一下这种糟糕的风格:总是使用例如Integer.parseInt。
还要注意,无论如何都不能将顶级类声明为static:只有嵌套/内部类才能声明为静态类。
发布于 2012-10-14 05:25:07
不,你错了。
只有静态方法可以这样调用,但它们可能属于“非静态”类。
发布于 2012-10-14 05:41:08
在java中,静态方法可以从对象中调用,但这只会生成一个警告,并且仍然会编译。非静态类可以具有由所有实例共享的静态字段和方法(这就是为什么" shared“在VB.NET中意味着静态)。因此,从对象访问静态成员可能会使读者感到困惑,因此必须避免。
https://stackoverflow.com/questions/12877100
复制相似问题