[解決済み] Javaです。どのようにメインメソッドから非静的なメソッドを呼び出すには?
質問
私はJavaを勉強していますが、次の問題があります:私はmainメソッドを次のように宣言しています。
public static void main(String[] args) {
..... }
私のメインメソッドの内部では、なぜなら 静的 他の静的メソッドしか呼び出せない!!! なぜ?
例えば 別のクラスがあります。
public class ReportHandler {
private Connection conn;
private PreparedStatement prep;
public void executeBatchInsert() { ....
} }
そこで、メインクラスで
private ReportHandler rh = new ReportHandler();
しかし、staticでなければどのメソッドも呼び出すことができない。
これはどこで間違っているのでしょうか?
EDIT: すみません、私の質問は、「出発点」から他のクラスを呼び出せるようにアプリを「設計」するにはどうしたらいいかということです。
static void main
).
解決方法は?
ReportHandlerのインスタンスを作成する必要があります。
ReportHandler rh = new ReportHandler(/* constructor args here */);
rh.executeBatchInsert(); // Having fixed name to follow conventions
インスタンスメソッドの重要なポイントは、クラスの特定のインスタンスに特化したものであることです。
作成
インスタンスを作成します。そうすれば、そのインスタンスは正しい接続とプリペアドステートメントにアクセスすることができます。ただ
ReportHandler.executeBatchInsert
が十分でない場合は
コンテキスト
.
それを理解することが本当に大事なんです。
- インスタンスメソッド(およびフィールドなど)は、特定のインスタンスに関連します。
- 静的なメソッドとフィールドは、型そのものに関係します。 ではなく 特定のインスタンス
この根本的な違いを理解すれば、インスタンスを生成しないとインスタンスメソッドを呼び出せないことも納得がいくのですが......。例えば、次のような問いかけは意味があります: "What is the height of あれ person?"(特定の人物に対して)尋ねることはできますが、"(人物を指定せずに)What is the height of Person?"と尋ねることは意味がありません。
本やチュートリアルからJavaを学んでいると仮定すると、静的メソッドと非静的メソッドなどの例をもっと読み込むべきです - それは 肝心な を理解しないと、いろいろな問題が発生します。
関連
-
[解決済み] intellijが自動配線リポジトリにタイプのBeanが見つからないと不正確な発言をする件
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] Javaで配列に特定の値が含まれているかどうかを判断するにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Javaインターフェースでスタティックメソッドを定義できないのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】不正なエスケープ文字"㊧"について
-
[解決済み】Android Studioでタスク :app:compileDebugJavaWithJavac の実行に失敗しました。
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】「java -cp」と「java -jar」の違い?
-
[解決済み】Gradleがtools.jarを見つけ出さない
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException
-
[解決済み】Javaのswitch文。定数式が必要だが、定数である
-
[解決済み】Java LinkedListでNodesを使用する
-
[解決済み] SQLエラー。0, SQLState: 08S01 通信リンクの失敗 [重複]。
-
[解決済み】フォルダに書き込もうとすると「java.nio.file.AccessDeniedException」が発生する件