الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أول سؤال؟ عن java.lang.System

مغلق
بدأه حسام الملحم في 12 مارس 2002 · 7 رد · 1,328 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم,

ما أعرفه أن متغير final لا يمكن تغييره،

إلا أني اكتشفت متغيراً final نستطيع تغييره في class java.lang.System،

المتغيرات System.out و System.err و System.in كلها public final ولا يمكن تغييرها بالجملة الآتية

System.out=new PrintStream(new SomeOutputStream());//wrong

يصدر

Compile Error : Cannot assign to final variable System.out

ولكنك تستطيع تغيير System.out باستخدام الوسيلة

System.setOut(PrintStream ps);//correct

كيف هذا؟

#2

حسب قول شركة صن ان متغير final لا يمكن تغييره ولم يثبت ان استطاع احد تغييره.

في النص المذكور تقوم الدالة بعملها دون المساس ب System.out

#3

السلام عليكم،

إلى كل من يهمه الأمر... وبالأخص الأخ سين ميم

أرجو ألا أطيل شرح هذه المسألة المتقدمة,

كي أوضح المسألة، خذ المثال التالي:

أعتقد أنك تعرف عمل System.out جيداً ولا سيما أننا نستعمله كثيراً في الطباعة على شاشة Dos باستخدام الوسيلة System.out.println()

فالـ System.out هو PrintStream وظيفته الطباعة على الشاشة. كما هو الحال أيضاً في System.err فهو يطبع الأخطاء، أيضاً في نفس الشاشة.

وللإيضاح: فإن ناتج

System.out.println(System.out.getClass());//Printing System.out class

هو

java.io.PrintStream

وقد عانيت كثيراً من مشكلة عدم قدرتي على قراءة مصدر الخطأ، لأن شاشة Dos لا تدعم (Scrolling). فأنشأتMonitor يرث PrintStream خاص للطباعة على JTextArea أفضل حتى أتمكن من قراءة مصدر الخطأ بالكامل، حيث أن JTextArea أستطيع دعمها بـ JScrollPane.

فأصبح لدي الآتي:

لإنشاء PrintStream يطبع على JTextArea

Monitor monitor=new Monitor();//create new instance

للطباعة عليه نستعمل أي Method من PrintStream

monitor.println("Anything and any object");//Prints to JTextArea

أما لجعل monitor هي Standard Output أو Standard Error Output

فنستعمل System.setOut(monitor);//set default output

و System.setErr(monitor);//set default error output

والآن ناتج العبارة التالية

System.out.println(System.out);//print System.out class

هو

montor.Monitor

الاستنتاج : System.out قد تغير.

ملاحظة: أنا جديد وأرجو إخباري عن كيفية كتابة ال Source من اليسار إلى اليمين، وأيضاً عن كيفية إدراج بعض zip files وهي عبارة عنmonitor package لأنها مفيدة جداً، وبها خيارات متعددة ووسائل تساعد المبرمج على قراءة الأخطاء وحفظها وما إلى ذلك

وشكراً

#4

اخ ابو مازن اليك الاتي

Field declarations (§8.3) describe class variables, which are 

incarnated once, and instance variables,

which are freshly incarnated for each instance of the class. 

A field may be declared final (§8.3.1.2), in which case it can 

be assigned to only once. Any field declaration may 

include an initializer.

وبخصوص كتابة الكود كيف تكتب كود

وبخصوص ادراج ملف لديك في اسفل كتابة الرسالة نموذج ادراج ملف بعنوان Browse...

وشكرا

#5

تهانينا على المنتدى الجديد وعقبال ما يعمر إن شاء الله

وعقبال الاشراف يابو مازن

:D :D ;) ;) :D :D

#6

شكراً جزيلاً على هذه المعلومات القيمة ...........

System.out.println("hi");

لماذا يظهر الكود من اليمين إلى اليسار؟؟؟؟؟؟؟ظ

#7

أشكرك أيتها الطموحة على الدافع.

وإن شاء الله لن أخيب ظنك أبداً....

#8

سألت أحد المختصين بالجافا في الجامعة:

ولم أفهم الكثير لأنه مختص بالهاردوير

يتم استعمال native methods حتى يتم تغيير وجهة المتغير System.in،

فـ System.setIn() وغيرها لا يغير المتغير، بل يغير الdefault في System الإدخال والإخراج.

هذا ما فهمته، وقد اطلعت على كود Class System بنفسي لدى المختص. ورأيت ال native method.

وشكراً على مشاركاتكم

هذا الموضوع مغلق.

مواضيع مشابهة