在本文中,我们将给您介绍关于NullPointerException:在派生类中重写基类的构造方法调用方法的详细内容,并且为您解答在派生类中重写基类方法必须使用override的相关问题,此外,我们还
在本文中,我们将给您介绍关于NullPointerException:在派生类中重写基类的构造方法调用方法的详细内容,并且为您解答在派生类中重写基类方法必须使用override的相关问题,此外,我们还将为您提供关于Android sdk:java.lang.NullPointerException:尝试调用虚方法、android – 方法调用可能会产生java NullpointerException、android – 来自Parcel.readException的NullPointerException(等)、Exception in thread "main" java.lang.NullPointerException的知识。
本文目录一览:- NullPointerException:在派生类中重写基类的构造方法调用方法(在派生类中重写基类方法必须使用override)
- Android sdk:java.lang.NullPointerException:尝试调用虚方法
- android – 方法调用可能会产生java NullpointerException
- android – 来自Parcel.readException的NullPointerException(等)
- Exception in thread "main" java.lang.NullPointerException
NullPointerException:在派生类中重写基类的构造方法调用方法(在派生类中重写基类方法必须使用override)
我有以下代码片段:
class Base { public Base() { method(); } void method() { System.out.println("In Base"); }}class Derived extends Base { private String bar; public Derived() { bar="bar"; } public void method() { System.out.println(bar.length()); } public static void main(String[] args) { Base base=new Derived(); base.method(); }}
执行代码时出现异常:
Exception in thread "main" java.lang.NullPointerException at Derived.method(Main.java:22) at Base.<init>(Main.java:5) at Derived.<init>(Main.java:17) at Derived.main(Main.java:27)
我不明白为什么会有NullPointerException
和stackTrace
例外。有人可以帮助我理解吗?
您可以在此处检查代码。
答案1
小编典典newDerived()
创建一个Derived
对象,这意味着首先调用其超类构造函数,然后依次调用method
-但您已覆盖method
它,因此它是该方法的子版本。在该方法中,您调用bar.length
尚未初始化的。
结论:在构造函数中调用可重写方法几乎从来不是一个好主意。
Android sdk:java.lang.NullPointerException:尝试调用虚方法
07-05 22:45:02.550 2821-2821/davvarn.csgo_maps E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: davvarn.csgo_maps,PID: 2821 java.lang.RuntimeException: Unable to start activity ComponentInfo{davvarn.csgo_maps/davvarn.csgo_maps.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setimageDrawable(android.graphics.drawable.Drawable)' on a null object reference at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2356) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2418) at android.app.ActivityThread.access$900(ActivityThread.java:154) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5289) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setimageDrawable(android.graphics.drawable.Drawable)' on a null object reference at davvarn.csgo_maps.MainActivity.changeContent(MainActivity.java:176) at davvarn.csgo_maps.MainActivity.onCreate(MainActivity.java:115) at android.app.Activity.performCreate(Activity.java:5990) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2309) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2418) at android.app.ActivityThread.access$900(ActivityThread.java:154) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5289) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
我真的不知道如何粘贴MainActivity文件,因为我是Stackoverflow的新手.请让我知道如何,我会尝试.
解决方法
ImageView imageView =(ImageView)findViewById(R.id.yourImageViewIDHere);
在onCreate调用setContentView之后,请执行此操作.
android – 方法调用可能会产生java NullpointerException
public String getNameUpdateEvent(long id) { Cursor mCursor = db.rawQuery("select name from events WHERE _id=" + id + ";",null); if (mCursor != null) { mCursor.movetoFirst(); } String updateNameEvent; updateNameEvent = mCursor.getString(mCursor.getColumnIndex("name")); return updateNameEvent; }
我得到一个警告
Warning:(173,45) Method invocation 'mCursor.getColumnIndex("name")' may produce 'java.lang.NullPointerException'
我可以修复它吗?
解决方法
public String getNameUpdateEvent(long id) { Cursor mCursor = db.rawQuery("select name from events WHERE _id=" + id + ";",null); String updateNameEvent = null; if (mCursor != null && mCursor.movetoFirst()) { updateNameEvent = mCursor.getString(mCursor.getColumnIndex("name")); } return updateNameEvent; }
android – 来自Parcel.readException的NullPointerException(等)
FATAL EXCEPTION: main java.lang.NullPointerException at android.os.Parcel.readException(Parcel.java:1437) at android.os.Parcel.readException(Parcel.java:1385) at com.yourpackage.ipc.IYourClass$Stub$Proxy.yourMethod(IYourClass.java:488) at com.yourpackage.ipc.YourClassShim.yourMethod(YourClassShim.java:269)
我找到了一堆相关的问题,但没有一个回答“你如何调试这个”.所以我正在提出这个问题/答案.
通过查看android源码here和here,你会发现它可以抛出任何这些(NullPointerException就是我所拥有的):
SecurityException(msg); BadParcelableException(msg); IllegalArgumentException(msg); NullPointerException(msg); IllegalStateException(msg); RuntimeException("UnkNown exception code: " + code + " msg " + msg);
但究竟是什么导致了这些?
解决方法
那么最初的例外来自哪里?好吧,在YourClass.yourMethod()的实际实现的某个地方 – 不在任何parcelable或IPC代码中.所以去那里,将整个方法包装在try / catch中,并记录你抓到的任何内容.
(或者如果你有远程进程断点工作,那么在那里设置一个断点.)
Exception in thread "main" java.lang.NullPointerException
/*** 功能:约瑟夫问题
*/
package com.sole;
public class Demo04{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
CycLink cyclink = new CycLink();
cyclink.setLen(5);
cyclink.createLink();
cyclink.showList();
}
}
class Child{
int num;
Child nextChild = null;
public Child( int num ){
this.num = num;
}
}
//环形链表
class CycLink{
//先定义一个指向链表第一个小孩的引用,不能动
Child firstChild = null;
Child temp = null;
int len = 0; //表示有几个小孩
//设置链表大小
public void setLen( int len ){
this.len = len;
}
//初始化环形链表
public void createLink(){
for( int i =0; i<=len; i++ ){
if( i == 1 ){
//创建第一个小孩
Child ch = new Child( i );
this.firstChild = ch;
this.temp = ch;
}else {
if( i == len ){
Child ch = new Child( i );
temp.nextChild = ch;
temp = ch;
temp.nextChild = this.firstChild;
}else{
//继续创建小孩
Child ch = new Child( i );
temp.nextChild = ch;
temp = ch;
}
}
}
}
//打印环形链表
public void showList(){
Child temp = this.firstChild;
do{
System.out.println( temp.num );
temp = temp.nextChild;
}while( temp != this.firstChild );
}
}
总是出现这个错误,找不出来,请高手帮忙指点
我们今天的关于NullPointerException:在派生类中重写基类的构造方法调用方法和在派生类中重写基类方法必须使用override的分享就到这里,谢谢您的阅读,如果想了解更多关于Android sdk:java.lang.NullPointerException:尝试调用虚方法、android – 方法调用可能会产生java NullpointerException、android – 来自Parcel.readException的NullPointerException(等)、Exception in thread "main" java.lang.NullPointerException的相关信息,可以在本站进行搜索。
本文标签: