בעיה עם main בJAVA

ASP zone

New member
בעיה עם main בJAVA

main היא public static void בJAVA ויש לי בעיה עם זה אני רוצה לגשת לחלקים הלא סטטים של המחלקה אבל אי אפשר מכיוון שmain סטטית... שגיאות:
Dialogs/ErrorBox.java [82:1] non-static variable sErrorDescription cannot be referenced from a static context new ErrorBox(sErrorDescription, frameBelongsTo).setVisible(true); ^ Dialogs/ErrorBox.java [82:1] non-static variable frameBelongsTo cannot be referenced from a static context new ErrorBox(sErrorDescription, frameBelongsTo).setVisible(true);​
קוד רלוונטי:
public static void main(String[] args) { new ErrorBox(sErrorDescription, frameBelongsTo).setVisible(true); }​
 
אולי עוד הסבר:../images/Emo26.gif

דרך 1:
public class Main { private int i; public static void main(String[] args) { i = 5; } }​
שגיאה... אתה מנסה לכתוב למשתנה סטטי למרות שלא יצרת instance (משהו בסגנון "Cannot make a static reference to the non-static field i" למשל...) דרך 2:
public class Main { private int i; public static void main(String[] args) { Main mymain = new Main(); mymain.i = 5; } }​
עכשיו אתה יוצר instance שאפשר לגשת לשדות שלו... וזה בסדר... העניין הוא שכשאתה "מריץ" class מסויים - ה-VM עושה פעולה דומה ל:
Main.main()​
בגלל זה main סטטית - ובגלל זה אתה לא יכול לגשת לשדות במחלקה. רק אם אתה יוצר במפורש instance - זה הופך להיות אפשרי. יש מבין?
 

ASP zone

New member
עכשיו יש לי בעיה אחרת...

קוד רלוונטי
ErrorBox dialogErrorBox = new ErrorBox( dialogErrorBox.sErrorDescription, dialogErrorBox.frameBelongsTo); dialogErrorBox.setVisible(true);​
שגיאה:
Dialogs/ErrorBox.java [83:1] variable dialogErrorBox might not have been initialized dialogErrorBox.sErrorDescription,​
 

DarkSwell

New member
תשובה..

אתה מוסר כערך לבנאי נתון שלא הוגדר, הפרמטר הראשון של הבנאי הוא בעצם חלק מהאובייקט שאתה יוצר באותה שורה, האובייקט עדיין לא נוצר אז איך אתה בעצם משתמש באחד המשתנים שלו על מנת לאתחל את עצמו. נכון גם לדבי הפרמטר השני, גם הוא שייך לאובייקט שעדיין לא נוצר.
 
למעלה