• 0
زهرهـ

سؤال عن ال Cast بالجافا

سؤال

السلام عليكم جميعا

حابه استفسر عن شغله وهي بخصوص ال cast

شو غرضها ولشو تستخدم واي وقت تستخدم؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

15 إجابة على هذا السؤال .

  • 0

تستخدم للتحويل من نوع Type الى اخر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مثال

public class casting
{
public static void main(String[] args)
{
double i = 54.3;
System.out.println(i);
// بتكون النتيجة طباعة 54.3

int j = (int)i;
System.out.println(j);
//بتكون النتيجة طباعة 54 لأننا حولنا الدبل إلى إنتجر
}
}

زي ماقالوا الشباب

تحويل من نوع إلى نوع ,, من دبل إلى إنتجر ,, من إنتجر إلى سترينق ,, من سترينق إلى إنتجر وهكذا

وممكن من أي نوع كلاس إلى أي كلاس آخر

تم تعديل بواسطه Mo 9a7i
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكورين

لكن ليها وقت معين للاستخدام؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الموضوع يحتاج إلى بعض التفصيل

ليس كل الأنواع يمكن أن تستخدمي عملية التحويل casting لتحويلها إلى نوع آخر

بالطبع الأنواع الأساسية مثل Int ,double يمكن التحويل بينها دائماً(أرجو التصحيح إن كان هناك خطأ)

بالنسبة للأنواع غير الأساسية يجب أن يكون الكائن المحول من فئة تشتق النوع المحول إليه وإلا فإنك ستحصلين على Casting Exception

لاحظي معي الشيفرة التالية

public class A {
public void get(){

}
}

public class B extends A{
public void is(){

}
public static void main(String[] args) {
A a1=new A();
B b1=(B)a1;
}
}

لاحظي عند تشغيل البرنامج السابق ستحصلي على ClassCastException

ثم لاحظي الشيفرة التالية

public class B extends A{
public void is(){

}
public static void main(String[] args) {
B b2= new B();
A a2=(A)b2;
}
}

ستجدي أن البرنامج قبل التحويل

لكنك لن تري إلى الطرق methods الموجود في النوع الأب الذي هو في حالتنا A

أتمنى أن أكون وضحت الفكرة

الله معك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أحيانا أختي تحتاجين إستخدامها

أعطيك مثال

فيه Method ب كلاس الماث تعطينا رقم عشوائي

Math.random()

الرقم يكون بين ال 0 وال 1 وصيغتـه double

أمثلة:

0.4342531121

0.0155478653

0.6435432454

لنفرض إنك تحتاجين رقم عشوائي بين الواحد والعشرة وتكون صيغتـه integer

إش تسوين ؟

تضربين الرقم العشوائي بعشرة

على سبيل المثال هذا الرقم

0.6534243454

بعد الضرب بعشرة بيصير كذا

6.534243454

إحنا نبغى رقم الستـة فقط ,, الباقي مانبغاه

نحوله لإنتجر

(int)6.534246543

هذا مثال

مثال آخر

المستخدم يدخل سطر معلومات يكتب مثلا

أبلغ من العمر 16 عاماً

الآن ,, نوع هذا السطر سوف يكون String

نقوم بتقطيعه ,, ونأخذ منه الرقم بأي طريقـــة

بإستخدام ال substring وال indexOf

والناتج يكون عندنا String جديد وقيمته "16"

نريد ان نعمل على هذا الرقم بس المشكلة إنه String

نحوله إلى int بإستخدام الكاستنق ,,, ;)

أتمنى الأفكار تكون وضحت أكثر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أظن أخي الكريم أن عملية التحويل من String إلى Int سيعطيك خطأ

حتى لو استخدمت النوع Integer فستحصل على خطأ في عملية الترجمة

والطريقة الصحيحة من خلال

Integer.parseInt(string);

الله معك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كنت اسمع انه بتم فيها تحويل اي نوع من الكبير للصغير

مشكورين وما قصرتوا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

قبل ان تقوم بعملية الcasting لابد ان تكون على علم بماهية العلاقه بين النوعين المحول منه والمحول اليه

هناك implicitly cast , explicit cast

class A {
public static void main (String [] ags){
A a1=new A();
B b1=new B();
A a2;
B b2;
a2=b1; // implicit cast
b2=(B)a2;// explicit cast
int i=3;
long l=i; // implicit cast
Object obj =a1; // implicit cast

}
}
class B extends A{

}

لاحظ انك عندما تريد التحويل من صغير إلى كبير مثل من int الى long فانك لست مجبراً على ان تكتب :

 long l=(long)i;

ولو كتبتها فلا مشكله وهذا مايسمى implicit cast

في الجهه المقابله عندما تحول من صغير إلى كبير فلابد ان تحولها ظاهريا explicit cast

  b2=(B)a2;// explicit cast

هذا بشكل بببسيط جداً والمسأله معقده ولا أريد الدخول فيها إلا اذا كان لك سؤال محدد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

PinBall aBall = (PinBall) balls.elementAt(i);

Here we cast the value into the type PinBall.

هذا المثال اللي كان مكتوب عندي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سبحان الله

ياأختي تعبي نفسك شوي واقراي ....

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سبحان الله يا عيسى

شكلك ناوي تزعلني منك

لازم تكون متسع صدر

بالنسبة للمثال يا أختي الكريمة يظهر أن عندك كائن من النوع كرة وكائن من النوع كرة صغيرة

والظاهر الكائن الأخير يقوم بوراثة الكائن كرة

بالتالي فأنتي عندما تقومين بالتحويل ببساطة لن تحصلي على أي مشاكل لأنك تقومين بالتحويل من كصغير إلى كبير

للتحويل من كبير إلى صغير هناك إمكانية لذلك هو أن يكون أصل الكائن من النوع الصغير ولكنا قمنا بتحويله إلى كبير من قبل

أتمنى أن تكون وصلت الفكرة

لا تزعل مني يا أخ عيسى إن صدر مني ما يسيء لك فبدون قصد

الله معكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اعتقد الاوبجكت ball نوع من الـ Collections

ممكن Vector

فهذه الانواع تعيد الاوبجكت من نوع Object لذا لزم تحويلها الى النوع المراد وهو PinBall وهو ايضا من نوع Object

By Default

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
السلام عليكم

ارجو بيفيدك هذا شرح جميل ووافى

بالتوفيق ان شاء الله

شكرا جزيلا لقد أستفدت كثيرا ووضح لي موضوع ال

casting بشكل مبسط ولذيذ

شكرا جزيلا وجزاك الله عني خيرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

This is the general format of an assignment conversion from an Oldtype to a Newtype. Unfortunately,

Oldtype can be a class, an interface, or an array; Newtype can also be a class, an interface,

or an array. Thus there are nine (3 3) possible combinations to consider

In general, object reference conversion is permitted when the direction of

the conversion is “up” the inheritance hierarchy; that is, the old type should inherit from the

new type. This rule of thumb does not cover all nine cases, but it is a helpful way to look

at things.

The rules for object reference conversion can be stated as follows:

_ An interface type can be converted only to an interface type or to Object. If the new type

is an interface, it must be a superinterface of the old type.

_ A class type can be converted to a class type or to an interface type. If converting to a class

type, the new type must be a superclass of the old type. If converting to an interface type,

the old class must implement the interface.

_ An array may be converted to the class Object, to the interface Cloneable or Serializable,

or to an array. Only an array of object reference types can be converted to an array, and the

old element type must be convertible to the new element type

الجزء دا مش فاهمه كويس لو ممكن حد يوضحهولي يعني لما أجي أعمل conversion ل objectrefference مين لازم يكون سوبر اللي بحوله والا اللي بيتحوله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تذكر معنى الوراثه

الوراثه تعني : أب وابن

الأبن بالتأكيد يحتوي على كل المعلومات في الأب (لأنه ورثها منه )

والعلاقه هنا تكون من الاقل ( الابن ) الى الأعلى (الأب)

لكن الأب قد يحتوي وقد لايحتوي على كل المعلومات في الأبن

A Class type can be converted to a Class type or to an interface type. If converting to a Class

type, the new type must be a superclass of the old type. If converting to an interface type,

the old Class must implement the interface

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .