`
leozam
  • 浏览: 29372 次
社区版块
存档分类
最新评论

null对象调用static方法

 
阅读更多
先给代码,猜猜结果
public class TestClass {
	private static void staticMethod(){
		System.out.println("static");
	}
	void normalMethod(){
		System.out.println("normal");
	}
	public static void main(String[] args) {
		TestClass testClass=((TestClass)null);
		testClass.staticMethod();
		testClass.normalMethod();
	}
}

我以为一开始就会报NullPointerException
结果 staticMethod()竟然执行了。。。
总结如下:
1.null可以被强转为任何对象
2.null强转为对象后调用该类的静态方法不会出错

mark以备查阅
分享到:
评论

相关推荐

    cefsharp JavaScript调用C#方法并返回参数

    2. 调用C#方法:在JavaScript中,可以使用`window.chrome.webview`对象的`call`方法来调用C#方法。假设我们有一个名为`addNumbers`的C#方法,接受两个整数参数并返回它们的和,JavaScript代码可能如下: ```...

    静态建对象调用成员对象的成员字段.rar

    7. **多态(Polymorphism)**:如果成员对象的成员字段是继承自父类的,那么通过子类的静态字段调用该字段时,会根据实际的对象类型动态绑定到相应的方法或字段,这就是多态性。 8. **内存管理(Memory Management...

    通过反射调用静态方法

    3. 调用`Method`对象的`invoke()`方法:传入null作为第一个参数,因为静态方法不需要实例对象。第二个参数是传递给静态方法的实际参数。 以下是一个简单的示例,演示如何使用反射调用静态方法: ```java public ...

    Java面向对象程序设计static关键字.pptx

    2. 静态方法:static修饰的方法称为静态方法,静态方法可以用类名直接调用,不需要创建对象实例。例如,`static void showInfo() {}`,这样可以使用`Teacher.showInfo()`直接调用静态方法。 3. 静态代码块:static...

    未将对象引用设置到对象的实例 (System.NullReferenceException)

    //调用一个Null对象的方法 } 当然啦!结果就如下图了: 这么赤裸裸的写出这种代码,不太容易,通常更倾向于下面一种: 2:通常性的错误: 示例1:一个过滤某些字符的函数: 代码如下: public static string Filter...

    在C或C++中调用JAVA方法

    在C或C++中调用JAVA方法是一种常见的跨语言交互技术,主要依赖于Java Native Interface (JNI)。JNI是Java平台的一部分,它允许Java代码和其他语言编写的代码进行交互,从而实现混合编程。JNI提供了丰富的API,使得...

    JNI中C调用Java方法的实例

    在本实例中,我们将深入探讨如何使用纯C语言通过JNI调用Java对象的方法。这个例子特别适合那些需要利用C/C++的高效性能,同时又需要与Java应用程序集成的开发者。 首先,我们需要理解JNI的基本概念。JNI提供了一套...

    Java面向对象(高级)- static关键字的使用

    Java中的`static`关键字是面向对象编程中的一个重要概念,它用于修饰类的成员变量和成员方法,以及静态初始化块。在Java中,`static`关键字具有以下几个核心特点和用途: 1. **类属性与类方法的设计思想**: 类的...

    Java 反射调用静态方法的简单实例

    在Java编程中,反射是一种强大的工具,它允许我们在运行时检查类、接口、字段和方法的信息,并能在不知道对象具体类型的情况下动态调用其方法或访问其属性。本文将详细讲解如何通过Java反射机制来调用静态方法。 ...

    Java 反射创建get set方法及反射方法的调用

    - 调用`PropertyDescriptor`的`getWriteMethod()`获取写方法(即set方法),并调用该方法更新对象属性的值。 3. **getProperty** 方法: - 该方法接收一个对象`obj`和属性名`propertyName`。 - 通过`...

    QT编写DLL调用示例 方法 参数 返回值 事件回调

    QT编写DLL给外部程序调用示例 方法 参数 返回值 事件回调 : 1:C#或者 NET 第一步:引入命名空间; using System Runtime InteropServices; 第二步:声明函数 必须与实际DLL中函数名及参数一致; [DllImport "qt...

    如何通过反射调用方法[参考].pdf

    此外,反射还能用于调用非静态方法,此时`instance`参数不再是`null`,而是目标对象的实例。同时,如果方法有重载,`Binder`参数可以用来选择合适的重载版本。 总之,反射提供了一种在运行时动态地访问和调用.NET...

    一个基于.NET的在运行时动态装载组件assembly 并调用内部方法的程序源码例子

    4. `MethodInfo`: 提供了对方法的反射访问,包括获取方法信息和调用方法的能力。 下面是一个简单的动态加载组件并调用其内部方法的示例: ```csharp using System; using System.IO; using System.Reflection; ...

    JNI与Java方法的相互调用

    `JNIEnv *env`参数提供了访问Java对象和调用Java方法的接口,`jobject this`是Java对象的引用。 要调用Java方法,我们可以使用`env`指针提供的函数,比如`CallVoidMethod()`,它允许我们在本地代码中调用Java方法。...

    C#实现反射调用动态加载的DLL文件中的方法

    - 当调用静态方法时,第一个参数应该为`null`。 - 如果方法没有参数,则可以传入`null`作为参数列表。 - 最后,不要忘记清理所有使用的对象引用,避免内存泄漏。 通过以上步骤,我们不仅实现了反射的基本原理,...

    C#动态调用程序集方法

    4. 调用方法:对于静态方法,可以使用`MethodInfo`的`Invoke`方法,传入null作为实例参数,然后传递其他参数。 描述中的代码示例似乎是一个通用方法,用于查找并返回当前目录下所有实现了特定接口`T`或继承了`T`...

    javastatic的使用方法.docx

    例如,在`Test`类的`main`方法中,`Programmer pro = new Programmer("Jack")`创建了一个`Programmer`对象,然后通过`pro.printName()`调用了`Programmer`版本的`printName`方法,而不是`Man`类的版本。 总结,`...

    C#_.NET_动态调用webservice的三种方式

    我们可以使用System.Reflection命名空间中的MethodInfo类来调用WebService方法。 需要引用的名称空间 在动态调用WebService时,我们需要引用以下四个名称空间: * System.Web.Services.Description * System....

    Java中String判断值为null或空及地址是否相等的问题

    这两种情况下的问题在于,如果name为`null`,调用`equals()`方法会抛出`NullPointerException`,因为对`null`对象调用任何方法都会导致异常。 正确的做法是在进行`equals()`比较之前,先检查`name`是否为`null`,...

    C 调用JAVA方法详解.doc

    在这个例子中,我们创建一个名为`Demo`的Java类,其中包含了一些基本类型和对象类型的属性,以及一些方法供C++调用。 ##### 3.1 创建Java类 1. **创建测试文件夹**:在硬盘上新建一个文件夹,命名为`test`。例如,...

Global site tag (gtag.js) - Google Analytics