-
Javaでオーバーライドする際のスローでは、親子階層が重要ですか?
特定のメソッドによってスローされた(チェックされた)例外を処理しようとするときは、例外を使用してそれをキャッチする必要があります。 例外のクラスまたはスーパークラスが発生しました。 同様に、スーパークラスのメソッドをオーバーライドしているときに、例外がスローされた場合- サブクラスのメソッドは、同じ例外またはそのサブタイプをスローする必要があります。 サブクラスのメソッドは、そのスーパータイプをスローしないようにする必要があります。 例外をスローせずにオーバーライドできます。 Demo、SuperTest、およびSuper in(階層)継承という名前の3つのクラスがあ
-
JavaでJacksonを使用してフィールドの代替名を定義するにはどうすればよいですか?
@JsonAlias アノテーションは1つ以上の代替名を定義できます デシリアライズ中に受け入れられた属性の場合、JSONデータをJavaオブジェクトに設定します。ただし、シリアル化する場合、つまりJavaオブジェクトからJSONを取得する場合は、エイリアスではなく、実際の論理プロパティ名のみが使用されます。 。 構文 @Target(value={ANNOTATION_TYPE,FIELD,METHOD,PARAMETER}) @Retention(value=RUNTIME) public @interface JsonAlias 例 import com.fasterxml.jacks
-
JavaのJacksonライブラリを使用してリストをJSON配列に変換するにはどうすればよいですか?
ObjectMapper クラスは、 Jackson APIで最も重要なクラスです。 readValue()を提供します およびwriteValue() JSONをJavaオブジェクトに変換し、JavaオブジェクトをJSONに変換するメソッド。 リストをJSON配列に変換できます writeValueAsString()を使用する ObjectMapperのメソッド クラスとこのメソッドを使用して、任意のJava値を文字列としてシリアル化できます。 構文 public String writeValueAsString(Object value) throws JsonProcessi
-
JavaでJSONArrayをStringArrayに変換するにはどうすればよいですか?
JSON 広く使用されているデータ交換形式の1つです 。 軽量です および言語 独立 。 JSONArray 文字列からテキストを解析してベクトルを生成できます -オブジェクトのように、 java.util.Listをサポートします インターフェイス。 JSON配列を文字列配列に変換できます 以下の例では 例 import org.json.*; import java.util.*; public class JsonArraytoStringArrayTest { public static void main(String[] args) {
-
Javaのインターフェースオブジェクトから派生クラスのメンバー変数にアクセスするにはどうすればよいですか?
スーパークラスの参照変数をサブクラスオブジェクトで保持しようとすると、このオブジェクトを使用してスーパークラスのメンバーにのみアクセスできます。この参照を使用して派生クラスのメンバーにアクセスしようとすると、コンパイル時間が取得されます。エラー。 例 interface Sample { void demoMethod1(); } public class InterfaceExample implements Sample { public void display() { System.out.p
-
コンストラクターがJavaでfinalになれないのはなぜですか?
メソッドをfinalにするときはいつでも、オーバーライドすることはできません。 それ。つまり、サブクラスからスーパークラスのfinalメソッドに実装を提供することはできません。 つまり、メソッドをfinalにする目的は、外部(子クラス)からのメソッドの変更を防ぐことです。 クラスを拡張するときはいつでも継承。子クラスは、コンストラクターを除くスーパークラスのすべてのメンバーを継承します。 つまり、コンストラクタはJavaで継承できないため、オーバーライドすることはできません。 コンストラクター。 したがって、コンストラクターの前にfinalを記述しても意味がありません。したがって、Ja
-
空白のfinal変数をすべてのJavaコンストラクターで明示的に初期化する必要があるのはなぜですか?
初期化せずに残された最終変数は、空白の最終変数と呼ばれます。 。 通常、コンストラクターでインスタンス変数を初期化します。見逃した場合、デフォルト値でコンストラクターによって初期化されます。ただし、最後の空白変数はデフォルト値で初期化されません。したがって、コンストラクターで初期化せずに空白のfinal変数を使用しようとすると、コンパイル時エラーが生成されます。 例 public class Student { public final String name; public void display() { &
-
Javaがコンストラクターで静的final変数の初期化を許可しないのはなぜですか?
変数staticおよびfinalを宣言する場合は、宣言時または静的ブロックで初期化する必要があります。コンストラクターで初期化しようとすると、コンパイラーは値を再割り当てしようとしていると見なし、コンパイル時エラーを生成します- 例 class Data { static final int num; Data(int i) { num = i; } } public class ConstantsExample { public static vo
-
最後のキーワードだけを使用してJavaで定数を定義できますか?
定数変数は、値が固定されており、そのコピーが1つだけプログラムに存在する変数です。定数変数を宣言してそれに値を割り当てると、プログラム全体でその値を再度変更することはできません。 他の言語とは異なり、Javaは定数を直接サポートしていません。ただし、変数staticおよび final を宣言することで、定数を作成できます。 。 静的 −変数staticを宣言すると、コンパイル時にメモリにロードされます。つまり、使用できるのは1つのコピーだけです。 最終 −変数finalを宣言すると、その値を再度変更することはできません。 したがって、インスタンス変数staticおよびfinalを宣言す
-
Javaで配列の要素を不変にする方法は?
いいえ、配列の要素を不変にすることはできません。 ただし、 unmodizableList() java.util.Collectionsのメソッド classは、Listインターフェイスのオブジェクト(そのクラスを実装するオブジェクト)を受け入れ、指定されたオブジェクトの変更不可能な形式を返します。ユーザーは、取得したリストへの読み取り専用アクセスのみが可能です。 そしてasList() ArrayListのメソッド クラスは配列を受け入れ、Listオブジェクトを返します。 したがって、不変の配列を変換するには- 目的のアレイを取得します。 asList()を使用して
-
Javaのデフォルトコンストラクタで静的変数を初期化できますか?
クラス/静的変数は、インスタンス変数と同じように、クラス内、メソッド外で宣言されますが、staticキーワードを使用してクラスに属します。 これらはコンパイル時にアクセスでき、クラスをインスタンス化する前/なしでアクセスできます。クラス全体で使用できる静的フィールドのコピーは1つだけです。つまり、静的フィールドの値はすべてのオブジェクトで同じになります。 staticキーワードを使用して静的フィールドを定義できます。 クラスで静的変数を宣言する場合、インスタンス変数の場合と同様に、静的変数を初期化していない場合は、コンパイラがデフォルトのコンストラクタでデフォルト値を使用して静的変数を初期
-
Javaの定数と最終変数の違いは?
Javaで一定 定数変数は、値が固定されており、そのコピーが1つだけプログラムに存在する変数です。定数変数を宣言してそれに値を割り当てると、プログラム全体でその値を再度変更することはできません。 C言語とは異なり、定数はJava(直接)ではサポートされていません。ただし、変数staticおよびfinalを宣言することで、定数を作成できます。 変数staticを宣言すると、コンパイル時にメモリにロードされます。つまり、使用できるのは1つのコピーだけです。 変数finalを宣言すると、その値を再度変更することはできません。 例 class Data {  
-
Javaシリアル化のfinalでtransientはどのように機能しますか?
Javaでは、シリアル化は、オブジェクトの状態をバイトストリームに書き込んで、ネットワーク経由で転送できるようにするための概念です(JPAやRMIなどのテクノロジを使用)。 一時変数 −一時変数の値は考慮されません(シリアル化プロセスから除外されます)。つまり、変数トランジェントを宣言すると、逆シリアル化後、その値は常にnull、false、またはゼロ(デフォルト値)になります。 したがって、クラスのオブジェクトをシリアル化するときに、JVMに特定のインスタンス変数を無視させたい場合は、それを一時的なものとして宣言できます。 public transient int limit = 55;
-
クラスがJavaに存在するのに、なぜClassNotFoundExceptionが発生するのですか?
クラスをロードしようとするときはいつでも、クラスローダーが指定されたパスでクラスを見つけることができない場合は ClassNotFoundException 生成されます。 これは、Javaプログラムの実行中に、 forName()を使用してクラスを明示的にロードしているときに発生する可能性があります。 Classという名前のクラスのメソッドまたはloadClass() ClassLoaderクラスのメソッド。これらの2つのクラスは、クラス名を表す文字列値を受け入れ、指定されたクラスをロードします。 これらのメソッドにクラス名を渡すときは、次のことを確認する必要があります- こ
-
Javaでオーバーライドする際にメソッドのシグネチャを変更できますか?
いいえ、スーパークラスのメソッドをオーバーライドするときは、両方のメソッドが同じ名前、同じパラメーター、同じリターンタイプを持っていることを確認する必要があります。そうでない場合、両方が異なるメソッドとして扱われます。 つまり、署名を変更した場合、スーパークラスのメソッドを実行しようとしても、スーパークラスのメソッドをオーバーライドすることはできません。 理由-署名を変更すると、両方が異なるメソッドと見なされ、スーパークラスメソッドのコピーがサブクラスオブジェクトで使用できるため、実行されます。 例 class Super { void sample(int a,
-
コレクションをJavaで読み取り専用にする方法は?
java.utilのCollectionsクラス コレクションでのみ機能するパッケージメソッドこれらのメソッドは、ポリモーフィックアルゴリズムを含むさまざまな追加操作を提供します。 このクラスは、以下に示すように、unmodizable()メソッドのさまざまなバリアントを提供します- Sr.No メソッドと説明 1 static Collection unmodizableCollection(Collection c) このメソッドは、任意のコレクションオブジェクトを受け入れ、指定されたコレクションの変更不可能なビューを返します。 2 s
-
Javaでコレクションスレッドを安全にする方法は?
コレクションのみを処理するjava.utilパッケージメソッドのCollectionsクラスは、これらのメソッドがポリモーフィックアルゴリズムを含むさまざまな追加操作を提供します。 このクラスは、以下に示すように、synchronizedCollection()メソッドのさまざまなバリアントを提供します- Sr.No メソッドと説明 1 静的コレクションsynchronizedCollection(コレクション c) このメソッドは、任意のコレクションオブジェクトを受け入れ、指定されたコレクションに基づく同期された(スレッドセーフな)コレクションを返します。
-
オーバーライドするメソッドは、Javaでオーバーライドされるメソッドによってスローされる例外のスーパータイプをスローできますか?
スーパークラスメソッドが特定の例外をスローする場合、サブクラスのメソッドはそのスーパータイプをスローしないようにする必要があります。 例 次の例では、スーパークラスのreadFile()メソッドがFileNotFoundException例外をスローし、サブクラスのreadFile()メソッドがFileNotFoundExceptionのスーパータイプであるIOExceptionをスローします。 import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.
-
オーバーライド中に、サブクラスはJavaで例外をスローしないことを選択できますか?
スーパークラスメソッドが特定の例外をスローした場合、例外をスローせずにオーバーライドできます。 例 次の例では、スーパークラスのsampleMethod()メソッドはFileNotFoundException例外をスローし、sampleMethod()メソッドは例外をまったくスローしません。それでも、このプログラムはエラーなしでコンパイルおよび実行されます。 import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Scanner; abstr
-
緩い結合とは、Javaを使用してどのように実現するのですか?
結合とは、2つのオブジェクトが互いに完全に独立していて、一方で行われた変更が他方に影響を与えない場合に、あるオブジェクトタイプが別のオブジェクトタイプに依存することを指します。両方が緩く結合されていると言われます。 インターフェイスを使用してJavaで緩い結合を実現できます- 例 interface Animal { void child(); } class Cat implements Animal { public void child() { System.out.println("