שאלה חשובה על משימה 5

מנהל: The Architect

נעול
thelegend
הודעות: 95
הצטרף: 21:02 15/12/2008

שאלה חשובה על משימה 5

שליחה על ידי thelegend » 16:40 14/02/2009

מישהו מוכן להסביר לי למה כאשר אני מקמפל את משימה 5 מופיע לי הדבר הבא:
clone() has protected access in java.lang.Object
אני די בטוח שאני עושה הכל נכון וכל העסק עם השיטה clone גם נכון ובמיוחד אחרי שנעזרתי ביורי
מאוד מוזר, דרך אגב הJcreator שלי הוא בגירסה הכי חדשה כמו שאמרו לנו להוריד אני מקווה שמישהו יוכל לעזור???

דרך אגב בקומפיילר אחר מגרסה קצת יותר ישנה הוא כותב את הדבר הבא:
Note: C:\Documents and Settings\ABC\שולחן העבודה\assignment 5\Population.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

thelegend
הודעות: 95
הצטרף: 21:02 15/12/2008

זה הקוד

שליחה על ידי thelegend » 17:27 14/02/2009

זוהי שורת הקוד בה מופיעה שגיאת הקומפילציה

קוד: בחירת הכל

	for(int i=0; i<size; i++)
    	{
	    		arr[i]=(Individual)(prototype.clone());
    	}

TA_IlanK
הודעות: 84
הצטרף: 23:16 17/11/2008
יצירת קשר:

Re: זה הקוד

שליחה על ידי TA_IlanK » 18:05 14/02/2009

thelegend כתב:זוהי שורת הקוד בה מופיעה שגיאת הקומפילציה

קוד: בחירת הכל

	for(int i=0; i<size; i++)
    	{
	    		arr[i]=(Individual)(prototype.clone());
    	}
לפי השגיאה שקיבלת נראה שהגדרת את prototype להיות מטיפוס אובייקט ולא מטיפוס אינדיוידואל.
בנוסף לכך, גם ה casting שביצעת אינו נכון. צריך להיות

קוד: בחירת הכל

	for(int i=0; i<size; i++)
    	{
	    		arr[i]=((Individual)prototype).clone();
    	}
[/quote]
מבנה נתונים מתרגל

thelegend
הודעות: 95
הצטרף: 21:02 15/12/2008

אבל...

שליחה על ידי thelegend » 18:14 14/02/2009

נמחק
נערך לאחרונה על ידי thelegend ב 19:07 14/02/2009, נערך פעם 1 בסך הכל.

TA_IlanK
הודעות: 84
הצטרף: 23:16 17/11/2008
יצירת קשר:

Re: אבל...

שליחה על ידי TA_IlanK » 18:24 14/02/2009

thelegend כתב:דווקא כאשר אני עושה את ה casting כמו שאמרת אז הוא אומר לי incompatible types בגלל זה שינית לאיך שאני עשית ואז הוא לא אומר incompatible types ודרך אגב לא הגדרתי את prototype להיות object הרי prototype זה משתנה מסוג Individual עשיתי בדיוק את מה שכתוב במשימה 5
public(int size, Individual prototype, Selection selection) like they want me to do

כלומר אני עושה הכל בסדר אז למה זה לא לא עובד???
אולי אני אמור לעשות את class Population אקסטנדס אינדיבידואל או אימפלמנטס Cloneable
אבל גם זה לא עובד כמובן.

שוב זה הקוד היותר מפורט

קוד: בחירת הכל

public Population(int size, Individual prototype, Selection selection){
        this.size=size; // size is a private field but mabye its not necessary
        Individual[] arr=new Individual[size];
    	for(int i=0; i<size; i++)
    	{
	    	arr[i]=((Individual)prototype).clone(); 
	    	
    	}
    	this.sel=selection;	 //sel is a private field but mabye its not necessary
    }

קשה באמת לדעת מה השגיאה בלי לראות את כל הקוד, השערה שלי שהגדרת את ערך ההחזרה של השיטה clone במחלקת אינדיוידואל להחזיר object ולא individual
מבנה נתונים מתרגל

thelegend
הודעות: 95
הצטרף: 21:02 15/12/2008

לא נראה לי

שליחה על ידי thelegend » 18:27 14/02/2009

נמחק
נערך לאחרונה על ידי thelegend ב 19:07 14/02/2009, נערך 2 פעמים בסך הכל.

TA_IlanK
הודעות: 84
הצטרף: 23:16 17/11/2008
יצירת קשר:

Re: לא נראה לי

שליחה על ידי TA_IlanK » 19:01 14/02/2009

thelegend כתב:הנה הקוד של השיטה clone (חבר'ה אל תעתיקו ממני אתם רק תיכשלו) (:

וכאן אין בעיה הכל מוגדר טוב את הקוד הזה עשיתי בעיקר בזכות הלינק שלכם ב FAQ ככה שאפשר לומר שזה קוד שלכם

קוד: בחירת הכל

    public Individual Clone(){// we are cloning the individual
    	Individual copy=null;
    	try
    	{
    		copy=(Individual)super.clone();
    	}	
    	catch(CloneNotSupportedException e) //If you try to call clone( ) on a class that does not implement Cloneable, a CloneNotSupportedException is thrown 
    	{
    		System.out.println(e.getMessage());
    	}
    	copy.fitness=Double.NaN;
    	return copy;		
    
    }//Clone

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

eyalwu
הודעות: 19
הצטרף: 17:52 09/01/2009

תגיד הגדרת את Individual

שליחה על ידי eyalwu » 19:06 14/02/2009

Individual extends cloneable?
נערך לאחרונה על ידי eyalwu ב 19:17 14/02/2009, נערך 2 פעמים בסך הכל.

thelegend
הודעות: 95
הצטרף: 21:02 15/12/2008

לללללללללללללאאאאאאאאאאאאאאאאאאאאאאא

שליחה על ידי thelegend » 19:09 14/02/2009

אני לאאאאאאאאאאאאאאאאאאאאאאאאאאא מאמין שזאת היתה הבעיה שברתי את הראש כמעט שעתיים וחיפשתי בגוגל כל דבר אפשרי על clone

:oops: :twisted: :twisted: :twisted: :evil: :evil: :evil: :evil: :evil:

תודה על העזרה

נ.ב מחקתי את הקודים שלי

נעול

חזור אל “- מבוא למדעי המחשב”