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

نقل بيانات لclass اخر

بدأه رااحيل في 19 ديسمبر 2009 · 17 رد · 991 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

فى برنامجى انا استدعى بيانات من قاعدة البيانات و عندى بيانات اخرى سيقوم المستخدم بأدخالها و اكيد انى سأحتفظ بها فى متغيرات

و لكنى اريد ان اظهر هذة البيانت فى نافذةاخرى

و لكنى اجد اخطاء لان هذة المتغيرات لم اعرفها فى الكلاس الجديد

قمت بعمل دالة و لم تتحل المشكلة ايضا

ماذا افعل

اتمنى يكون قصدى وصل

و شكرا مقدما

00020309t.gif

1958_1963.gif
#2

قومي بتمرير المتغيرات من خلال ال constructor

مثلا لنفرض ان لدي class 1و 2

public class class1(){

private String x="x value";
public class class1(){
class2 c= new class2(this.x);
}
}

public class class2{
private String x=null;
public class2(String x){
this.x=x;
ٍSystem.out.println(this.x);
}
}

او من خلال arguments ل method معينة

مثلا

class2 c= new class2();
c.setX(this.x);
x.setSomething(this.something);

الخخخخ

تم تعديل هذه المشاركة بواسطة EZ.ELDEEN في 20 ديسمبر 2009 في 01:16

Unix is user friendly. It's just selective about who its friends are .

#3

يجب أن تفكري مليا في بنية مشروعك والفئات التي ستحتاجينها حتى لا تقعي في مثل هذه المشاكل.

1
#4

السلام عليكم

شكرا لك اخى عز الدين

و لكن طريقتك فى الكود مختلفة نوعا ما عنى و لكنى سأطبق و سأطلعكم على النتيجة

شكرا لك اخى herch و بالفعل انا فكرت كثيرا و حاولت و الله >>>5 ساعات فى الجامعة مع المشروع

شكرا جزيلا

00020309t.gif

1958_1963.gif
#5

السلام عليكم

حاولت و لم استطيع :ohmy: :ohmy:

هذا هو الكود

اريد انا اخد بيانات من هذا الكلاس و ليكن سأخذ sfirst,ssecond,slast

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


 */
public class passenger extends javax.swing.JFrame {

    /** Creates new form passenger */
    public passenger() {
         initComponents();
          }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNIphoneNG: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        first = new javax.swing.JTextField();
        second = new javax.swing.JTextField();
        last = new javax.swing.JTextField();
        phone = new javax.swing.JTextField();
        address = new javax.swing.JTextField();
        age = new javax.swing.JTextField();
        gender = new javax.swing.JComboBox();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jLabel7 = new javax.swing.JLabel();
        jComboBox1 = new javax.swing.JComboBox();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("First name");

        jLabel2.setText("Phone number");

        jLabel3.setText("Address");

        jLabel4.setText("Last name");

        jLabel5.setText("Second name");

        jLabel6.setText("Gender");

        jLabel8.setText("Age");

        gender.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "_______", "female", "male" }));

        jButton1.setText("Finish");

        jButton2.setText("Show ticket");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jButton4.setText("Back");

        jLabel7.setText("Age type");

        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "________", "Adult", "Infant", "Child" }));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(phone, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap())
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(jButton4)
                        .addGap(60, 60, 60)
                        .addComponent(jButton2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 209, Short.MAX_VALUE)
                        .addComponent(jButton1)
                        .addGap(36, 36, 36))
                    .addComponent(jLabel6)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jLabel3)
                                    .addComponent(jLabel8))
                                .addGap(18, 18, 18)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(age, javax.swing.GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE)
                                    .addComponent(gender, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(address))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(jLabel7))
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addComponent(jLabel1)
                                .addGap(10, 10, 10)
                                .addComponent(first, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(jLabel5)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(second, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 50, Short.MAX_VALUE)
                                .addComponent(jLabel4)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(last, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addContainerGap())
                            .addGroup(layout.createSequentialGroup()
                                .addGap(18, 18, 18)
                                .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addContainerGap())))))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(66, 66, 66)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jLabel5)
                    .addComponent(jLabel4)
                    .addComponent(first, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(second, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(last, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(phone, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(27, 27, 27)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(address, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel7)
                    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(32, 32, 32)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(age, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel8))
                .addGap(21, 21, 21)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel6)
                    .addComponent(gender, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jButton4)
                        .addComponent(jButton1))
                    .addComponent(jButton2))
                .addContainerGap(22, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String sfirst=first.getText();
        String slast=last.getText();
        String ssecond=second.getText();
        String sphone=phone.getText();
        String saddress=address.getText();
        String sage=age.getText();
        String sgender=(String) gender.getSelectedItem();

        try {
            DriverManager.registerDriver(new com.mysql.jdbc.Driver() );
            Connection connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/airline","root","root");
            Statement s=(Statement) connection.createStatement();
            s.executeUpdate("insert into reservation(first_name,second_name,last_name,tele_no,address,age,gender) values('"+sfirst+"','"+ssecond+"','"+slast+"','"+sphone+"','"+saddress+"','"+sage+"','"+sgender+"')");
        } catch (SQLException ex) {
            Logger.getLogger(passenger.class.getName()).log(Level.SEVERE, null, ex);
        }
       /* show( sfirst, ssecond, slast);*/
        Ticket t=new Ticket();
        t.setSize(400,400);
        t.setVisible(true);
        t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



    }                                        

    /**
    * @
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new passenger().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JTextField address;
    private javax.swing.JTextField age;
    private javax.swing.JTextField first;
    private javax.swing.JComboBox gender;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton4;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JTextField last;
    private javax.swing.JTextField phone;
    private javax.swing.JTextField second;
    // End of variables declaration                   

   /* private void show(String sfirst, String ssecond, String slast) {

    }*/

}

واريد ان اظهرهم على ال textfield فى هذا الكلاس

public class Ticket extends javax.swing.JFrame {

    /** Creates new form Ticket */
    public Ticket() {
        passenger p=new passenger();

        initComponents();
        /*show();*/

    }
   /* public void show(String f,String s,String l){
        name.setText(f+" "+s+" "+l+" ");
    }*/

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jLabel2 = new javax.swing.JLabel();
        name = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel2.setText("Passenger's name");

        name.setEditable(false);
        name.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                nameActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(28, 28, 28)
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(name, javax.swing.GroupLayout.PREFERRED_SIZE, 203, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(131, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(60, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(220, 220, 220))
        );

        pack();
    }// </editor-fold>                        

    private void nameActionPerformed(java.awt.event.ActionEvent evt) {                                     
        // TODO add your handling code here:
        name.setText("esraa");
        name.setEditable(false);
    }                                    

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Ticket().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JLabel jLabel2;
    private javax.swing.JTextField name;
    // End of variables declaration                   

}

انا عارفة ان السؤال سهل بس استحملونى لانى حاولت و الله

متشكرة كتير :wub:

00020309t.gif

1958_1963.gif
#6

أنت تخزنين المعلومات الخاصة بالمسافر داخل متغيرات محلية local variables في actionPerformed وبالتالي لا يمكن الوصول لهذه القيم

يجب أن تعرفيها على أساس أنها instance variables ثم تكتبي getters methods خاص بكل متغير

لو ممكن تشرحي لنا مشروعك وكيفية عمله لاني لا أظن أن الطريقة التي تعملين بها هي الطريقة المثلى. فمثلا يستحسن عمل فئة خاصة بالبيانات وفئة أخرى خاصة بالواجهة GUI

#7

لا أرى أنك استخدمت جملة select من قاعدة البيانات Data Base

بالعكس كل ما أراه هنا أنك تقومين بعملية insert

بالمناسبة يا أخ عصام ليس بالضرورة أن تقوم بعمل كائن للبيانات

لأن عملية إنشاء الكائن ليست بالعملية القليلة

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#8

السلام عليكم

شكرا لكم جميعا

اما بالنسبة لمشروعى.......

عندما سيقوم السمتخدم بأدخال بيانات خاصة به

انا اريد ان اطبع هذة البيانات فى نافذة اخرى مع بعض البيانات التى سأاستدعيها من قاعدة البيانات

بالفعل انا لم اقوم بأستدعاء هذة البيانات فى الكود و ذلك لانى اريد ان اعرف كيف احل مشكلتى اولا

ثم اقوم بكتباة كل شىء بعد ذلك

لو لم تفهموا قصدم من الممكن ان اقوم برفع المشروع

00020309t.gif

1958_1963.gif
#9

ليش معقدينها :S

فقط اعملي overload لل constructor او استبدليه في الكلاس Ticket

قومي بانشاء متغيرات لتخزين البيانات المستقبلة عبر arguments ال constructor او قومي بادخال البيانت مباشرة للتكست فيلدز

كالمثال :

public Ticket(String first,String last ,String second ,String phone ,int age ,String gender ) {
        this.first=first;
this.second=second;
this.last=last;
this.phone=phone;
      الخخخخخخخخخخخخخخخخخخخخخخخ
        initComponents();
        /*show();*/

    }

عند انشاء instance من ال class المذكورة

Ticket t = new Ticket(this.sFirst.getText(),this.sLast.getText(),this.sSecond.getText(),this.sPhone.getText(),(int)this.sAge.getText(),this.sGender.getText());

-------------------------------------------------

او مثل ما ذكر الاخ herch

public class SClass{
String first=null;
String last =null;
String second=null
String phone=null;
String gender=null;
int age;
public SClass(String first,String last ,String second ,String phone ,int age ,String gender){
this.first=first;
this.second=second;
this.last=last;
this.phone=phone;
this.gender=gender;
this.age=age;
}
public SClass(){

}
public void setFirst(String first){
this.first=first;
}
public String getFirst(){
return this.first;
}
//and so  on اكملي على هالمنوال 

}

بهيك صار عندنا class ممكن انشئ منها object لكل شخص على حدى تحتوي على كل بياناته

ممكن ادخل بياناته من خلال ال constructor او ممكن انشئ instance منه و ادخل بياناته و اخذها من خلال ال methods الخاصة بكل متغير set او get

و تمريره لل class الي اسمها Ticket من خلال constructor

كالتالي

في حال اسم ال instance او المتغير (لست خبيرا بمسطلحات الحاسوب بالعربية :D )من SClass في الكلاس passenger كان s

يعني

ٍ

SClass s=new SClass(<your arguments>);

سامرر القيم ل ال class الاخرى ,, Ticket

بهذه الصورة

Ticket t=new Ticket(this.s);

و في هذه الحالة سيكون constructor ال Ticket

بهذه الصورة

private SClass s=null;// SClass new  instance 
public Ticket(SClass s){
this.s=s;
initComponents();
// و قومي بعرض القيم من خلال methods ال get الي قمنا بانشائها ......... يعني 
this.firstTextField.setText(this.s.getFirst())
// 
}

------------------------------------------------------

بهيك بنكون حلينا المشكلة بطريقتين متشابهتين تقريبا

بقيت طريقة واحدة لا انصح بها و لن ينصح بها غيري الا في حالات معينة و هي جعل القيم في ال passenger class

public static و عندها سيكون الوصول لها من خلال اسم ال class

مثلا

String first=passenger.firstTextField.getText();

بحيث firstTextField عبارة عن public static JTextField

Unix is user friendly. It's just selective about who its friends are .

#10

شكرا لك اخى الكريم

بصراحة استفدت كتير منكم

و ان شاء الله سأطبق>>بتأخر انا كتير

جزاكم الله كل خير

00020309t.gif

1958_1963.gif
#11
اقتباس

بقيت طريقة واحدة لا انصح بها و لن ينصح بها غيري الا في حالات معينة و هي جعل القيم في ال passenger class

public static و عندها سيكون الوصول لها من خلال اسم ال class

مثلا

String first=passenger.firstTextField.getText();

بحيث firstTextField عبارة عن public static JTextField

لا يوجد أي حالة يا أخ EZ.ELDEEN أي حالة

هذه الطريقة عبارة عن كارثة تمشي على قدمين

بالنسبة للطرقيتين التي ذكرتهما فهما الطرق الصحيحة

وإن كنت أفضل الطريقة الأولى لأنها لا تحتوي على إنشاء كائنات جديدة

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#12

لابد من وجود حالات مماثلة حيث تتغير القيمة من خلال task معين و التعامل مع القيم الحالية في حال تغيرها في اخرى

لكن في هذه الحالة هي كارثة فعلية

Unix is user friendly. It's just selective about who its friends are .

#13

لا يوجد حالات على الأغلب

لأنه وجود الدالة setFirst مثلاً

يمكنك من القيام بنفس المهمة

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#14

طيب

اعمل counter لعدد ال objects من class اسمها x مثلا

------------------

سيبك من هالحكي ابقى ميل عالماسنجر .. الي يومين بدور عليك

Unix is user friendly. It's just selective about who its friends are .

#15
We can use public static for final values that should be accessed from many places
Example: public static final String DEFAULT_LANGUAGE = "en";
         public static final int MAX_LOGIN = 5;

EZ.ELDEEN كتب:

طيب

اعمل counter لعدد ال objects من class اسمها x مثلا

------------------

سيبك من هالحكي ابقى ميل عالماسنجر .. الي يومين بدور عليك

ممكن تعطي مثل عن ال- counter الذي تتكلم عنه ؟

#16
public class NewClass {

    public NewClass() {
        for(int i=0;i<=3;i++){
        new nclass();
        System.out.println("u have "+nclass.counter+" nclass objects");
        }
    }
    public static void main(String[] a){
    new NewClass();
    }

}
class nclass{
public static int counter=0;

    public nclass() {
        counter++;
    }

}

Unix is user friendly. It's just selective about who its friends are .

#17
/**
 * I guessed that meant this just wanted to be sure :)
 * In your case it's not good to allow that public access to your counter
 * first there is the concurrency problem so updating counter value must be synchronized
 * second in your case counter can be updated anywhere in any class which is wrong
 * counter must be accessed through a getter only
 */
public class NewClass {

    public NewClass() {
        for(int i=0;i<=3;i++){
        nclass someClass = new nclass();
        System.out.println("u have "+someClass.getCounter()+" nclass objects");
        }
    }
    public static void main(String[] a){
    new NewClass();
    }

}
class nclass{

private static int counter=0;

    public nclass() {

        incrementCounter();
    }

    private synchronized static void incrementCounter()
    {
           counter++;
    }

    public int getCounter()
    {
         return counter;
    }

}
#18

كما فعل الأخ Nullone حتى مع وجود static

فلا حاجة لاستخدام المتغير مباشرة

-------

ماشي يا عز باشا :)

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

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