タグ付けされた質問 「nullpointerexception」

オブジェクトが必要な場合にアプリケーションがnullを使用しようとするとスローされるJava例外。

9
自然に発生させるのではなく、明示的にNullPointerExceptionをスローするのはなぜですか?
JDKソースコードを読むとき、作成者がパラメーターがnullかどうかを確認し、新しいNullPointerException()を手動でスローすることがよくあります。なぜ彼らはそれをするのですか?メソッドを呼び出すと新しいNullPointerException()がスローされるので、そうする必要はないと思います。(たとえば、HashMapのソースコードは次のとおりです:) public V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) { if (remappingFunction == null) throw new NullPointerException(); Node<K,V> e; V oldValue; int hash = hash(key); if ((e = getNode(hash, key)) != null && (oldValue = e.value) != null) { V v = remappingFunction.apply(key, oldValue); …

6
Java8でラムダを使用してnullでない場合にのみ値をフィルタリングする
私は言うオブジェクトのリストがありますcar。Java 8を使用して、いくつかのパラメーターに基づいてこのリストをフィルター処理したいのですが、パラメーターがの場合はnull、がスローされNullPointerExceptionます。null値を除外する方法は? 現在のコードは次のとおりです requiredCars = cars.stream().filter(c -> c.getName().startsWith("M")); これはスローNullPointerExceptionあればgetName()リターンnull。

9
@Nullableおよび@Nonnullアノテーションをより効果的に使用するにはどうすればよいですか?
私はそれを見ることができる@Nullableと@Nonnull注釈ができ予防に有用であるNullPointerExceptionのを、彼らは非常に遠くに伝播されません。 これらの注釈の有効性は、1レベルの間接参照の後に完全に低下するため、ほんの数個追加しただけでは、あまり伝播しません。 これらの注釈は十分に実施されていないため、でマークされた値@Nonnullがnull ではないと想定し、その結果nullチェックを実行しない危険があります。 以下のコードはでマークされたパラメータが発生@Nonnullするnullいかなる苦情を上昇させずに。NullPointerException実行されるとそれをスローします。 public class Clazz { public static void main(String[] args){ Clazz clazz = new Clazz(); // this line raises a complaint with the IDE (IntelliJ 11) clazz.directPathToA(null); // this line does not clazz.indirectPathToA(null); } public void indirectPathToA(Integer y){ directPathToA(y); } public void directPathToA(@Nonnull Integer x){ x.toString(); …

4
ブール、条件演算子、オートボクシング
なぜこれがスローされるのですか NullPointerException public static void main(String[] args) throws Exception { Boolean b = true ? returnsNull() : false; // NPE on this line. System.out.println(b); } public static Boolean returnsNull() { return null; } これはしませんが public static void main(String[] args) throws Exception { Boolean b = true ? null : false; …

4
String.valueOf(null)がNullPointerExceptionをスローするのはなぜですか?
ドキュメントによると、メソッドString.valueOf(Object obj)は次を返します: 引数がの場合null、次に等しい文字列"null"。それ以外の場合は、の値obj.toString()が返されます。 しかし、私がこれをやろうとするとどうなりますか: System.out.println("String.valueOf(null) = " + String.valueOf(null)); 代わりにNPEをスローしますか?(信じられない場合は自分で試してください!) スレッド「メイン」の例外java.lang.NullPointerException java.lang.String。(不明なソース) java.lang.String.valueOf(Unknown Source)で なぜこれが起こっているのですか?ドキュメントは私に嘘をついていますか?これはJavaの大きなバグですか?

19
NullチェックチェーンとNullPointerExceptionのキャッチ
Webサービスが巨大なXMLを返すので、それの深くネストされたフィールドにアクセスする必要があります。例えば: return wsObject.getFoo().getBar().getBaz().getInt() 問題はそれです getFoo()、getBar()、getBaz()すべて返すことがありnull。 しかし、私がチェックした場合 nullすべてのケースでと、コードが非常に冗長になり、読みにくくなります。また、一部のフィールドのチェックが抜ける場合があります。 if (wsObject.getFoo() == null) return -1; if (wsObject.getFoo().getBar() == null) return -1; // maybe also do something with wsObject.getFoo().getBar() if (wsObject.getFoo().getBar().getBaz() == null) return -1; return wsObject.getFoo().getBar().getBaz().getInt(); 書いてもいいですか try { return wsObject.getFoo().getBar().getBaz().getInt(); } catch (NullPointerException ignored) { return -1; } それともアンチパターンと見なされますか?

5
Boolean.valueOf()がNullPointerExceptionを生成することがある
私はこのコードを持っています: package tests; import java.util.Hashtable; public class Tests { public static void main(String[] args) { Hashtable<String, Boolean> modifiedItems = new Hashtable<String, Boolean>(); System.out.println("TEST 1"); System.out.println(modifiedItems.get("item1")); // Prints null System.out.println("TEST 2"); System.out.println(modifiedItems.get("item1") == null); // Prints true System.out.println("TEST 3"); System.out.println(Boolean.valueOf(null)); // Prints false System.out.println("TEST 4"); System.out.println(Boolean.valueOf(modifiedItems.get("item1"))); // Produces NullPointerException System.out.println("FINISHED!"); // …

8
javax.annotation。*内に@Nullableが見つかりません
@Nullable アノテーションを使って排除したいNullPointerExceptions。ネット上でいくつかのチュートリアルを見つけましたが、この注釈がパッケージからのものであることに気付きましたjavax.annotation.Nullable。しかし、インポートするとコンパイルエラーが発生します:シンボルが見つかりません

13
onCreate()でビューにアクセスするNullPointerException
これは、StackOverflowに頻繁に投稿される問題に対する標準的な質問です。 チュートリアルに従っています。ウィザードを使用して新しいアクティビティを作成しました。私が手NullPointerExceptionにメソッドを呼び出すしようとしたときViewに得られたS findViewById()私の活動ではonCreate()。 活動onCreate(): @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); View something = findViewById(R.id.something); something.setOnClickListener(new View.OnClickListener() { ... }); // NPE HERE if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()).commit(); } } レイアウトXML(fragment_main.xml): <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="packagename.MainActivity$PlaceholderFragment" > <View android:layout_width="100dp" android:layout_height="100dp" …


11
Eclipse / Android:「プロジェクトでビルダー「Android Pre Compiler」を実行中にエラーが発生しました...」
私が数か月間取り組んでいないAndroidプロジェクトでいくつかの作業を行おうとしていますが、プロジェクトをビルドしようとするたびに、Eclipseは次のようなダイアログをスローします。 'Building workspace' has encountered a problem Errors occurred during the build. Errors running builder 'Android Pre Compiler' on project 'XXX' java.lang.NullPointerException Androidプロジェクトビルドターゲット4.0.3(APIレベル15)を搭載したMacでEclipseを実行していて、次のバージョンのものがインストールされています Eclipse-3.7.2 Android開発ツール-21.0.1 Android SDK-最大17 まったく新しいワークスペースを開始する、この 'Subversive SVN JDT Ignore Extensions'をインストールする、すべてをアップグレードするなど、いくつかのことをすでに試しました。ソースフォルダー(または他の場所)に拡張子のないファイルがないことを確認します。 Javaコンパイラーが1.6であることを確認し、オフにしてから再びオンにします。 編集 この問題のEclipseエラーログからのスタックトレースは次のとおりです。 java.lang.NullPointerException at com.android.ide.eclipse.adt.internal.build.builders.PreCompilerBuilder.build(PreCompilerBuilder.java:673) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292) at …

2
Double.parseDouble(null)とInteger.parseInt(null)が異なる例外をスローするのはなぜですか?
Double.parseDouble(null)とInteger.parseInt(null)が異なる例外をスローするのはなぜですか? これは歴史的な事故ですか、それとも意図的な事故ですか?ドキュメントは明確のために、例外の2種類を述べてDouble.parseDouble(...)とのための1つをInteger.parseInt()、それは矛盾しているようです。 Integer.parseInt(null); // throws java.lang.NumberFormatException: null しかしながら Double.parseDouble(null); // throws java.lang.NullPointerException

7
なぜこれがNullPointerExceptionをスローしないのですか?
次のコードの説明: StringBuilder sample = new StringBuilder(); StringBuilder referToSample = sample; referToSample.append("B"); System.out.println(sample); これはB、証明sampleとreferToSampleオブジェクトが同じメモリ参照を参照するように印刷されます。 StringBuilder sample = new StringBuilder(); StringBuilder referToSample = sample; sample.append("A"); referToSample.append("B"); System.out.println(referToSample); これはAB同じことを証明するものを印刷します。 StringBuilder sample = new StringBuilder(); StringBuilder referToSample = sample; referToSample = null; referToSample.append("A"); System.out.println(sample); NullPointerException私がappendnull参照を呼び出そうとしているので、これは明らかにスローされます。 StringBuilder sample = new StringBuilder(); StringBuilder referToSample = sample; …

4
Android:データ(エクストラ)をフラグメントに渡す
私はAndroidプログラミングに不慣れで、ParcelableのArrayListをフラグメントに渡すときに問題が発生します。これは起動されるアクティビティです(うまく機能しています!)。ここで、フィードリストはパーセル可能な音楽のArrayListです。 Intent in = new Intent(context, ListMusicsActivity.class); in.putExtra("arrayMusic", feedList); activity.startActivity(in); フラグメントアクティビティonCreate()メソッド: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activitymusiclist); if(savedInstanceState != null) { ListMusicFragment frag = new ListMusicFragment(); frag.setArguments(getIntent().getExtras()); } } フラグメントコード: public class ListMusicFragment extends SherlockFragment{ private ArrayList<Music> listMusics = new ArrayList<Music>(); private ListView listMusic; @Override public View onCreateView(LayoutInflater …

7
整数と整数を比較すると、JavaでNullPointerExceptionがスローされるのはなぜですか?
この状況を観察することは私にとって非常に混乱しました: Integer i = null; String str = null; if (i == null) { //Nothing happens ... } if (str == null) { //Nothing happens } if (i == 0) { //NullPointerException ... } if (str == "0") { //Nothing happens ... } したがって、ボクシング操作が最初に実行され(つまり、Javaがからint値を抽出しようとするnull)、比較操作の優先度が低いと思うので、例外がスローされます。 問題は、なぜJavaでこのように実装されているのかということです。ボクシングが参照の比較よりも優先されるのはなぜですか?または、なぜ彼らはnullボクシングの前に検証を実装しなかったのですか? 現時点では、NullPointerExceptionがラップされたプリミティブでスローされ、実際のオブジェクトタイプでスローされない場合、一貫性がないように見えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.