GVKun编程网logo

NullPointerException:在派生类中重写基类的构造方法调用方法(在派生类中重写基类方法必须使用override)

12

在本文中,我们将给您介绍关于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)

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)

我不明白为什么会有NullPointerExceptionstackTrace例外。有人可以帮助我理解吗?

您可以在此处检查代码。

答案1

小编典典

newDerived()创建一个Derived对象,这意味着首先调用其超类构造函数,然后依次调用method-但您已覆盖method它,因此它是该方法的子版本。在该方法中,您调用bar.length尚未初始化的。

结论:在构造函数中调用可重写方法几乎从来不是一个好主意。

Android sdk:java.lang.NullPointerException:尝试调用虚方法

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的新手.请让我知道如何,我会尝试.

解决方法

确保已初始化图像视图并使用XML中定义的正确ID.您可以像这样初始化ImageView:

ImageView imageView =(ImageView)findViewById(R.id.yourImageViewIDHere);

在onCreate调用setContentView之后,请执行此操作.

android – 方法调用可能会产生java NullpointerException

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'

我可以修复它吗?

解决方法

你的光标不能为null,它将始终有任何值.但是光标可以是空的,所以你应该首先使用movetoFirst()方法去游标中的第一行,如果它返回true,这意味着该游标至少有一行,所以你可以用它来完成所有的操作,如果它返回false – 这意味着您的查询没有任何内容,因此您没有任何行可以获取数据.你的代码应该是这样的:
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(等)

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);

但究竟是什么导致了这些?

解决方法

这里发生的是readException()正在检查IPC字节流中是否有一个标题,表明发生了异常;如果它找到一个,那么它会抛出该类型的新异常,并使用相同的消息,但是缺少原始堆栈跟踪. (它实际上只知道一些异常类型;其他任何东西都被转换为基本的RuntimeException.)

那么最初的例外来自哪里?好吧,在YourClass.yourMethod()的实际实现的某个地方 – 不在任何parcelable或IPC代码中.所以去那里,将整个方法包装在try / catch中,并记录你抓到的任何内容.

(或者如果你有远程进程断点工作,那么在那里设置一个断点.)

Exception in thread

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的相关信息,可以在本站进行搜索。

本文标签: