🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.program
Article #1267

��Ƕ����ι���?

#1267
From: ���ܵ�Сʨ
Date: Sat, 18 Apr 1998 00:00
170 lines
13062 bytes
JDK1.1���﷨:��Ƕ��(2)
 ��Ƕ�๤����ʽ
    һ�������,��Ƕ�������ijЩ��װ��ʵ�����,���,��Ƕ��ʵ
���ܹ������װʵ��
    Java 1.1������ͨ����븽�ӵ�˽��(private)ʵ�����������
��һ��,�ñ�����������Ƕ������װ��,���ʼ��Ϊһ�����Ӳ���,��
�ݸ���Ƕ�๹����򡣲��������������Ƕ��ʵ��ı��ʽ����;��
��Ĭ��Ϊ����ɴ���ɹ����Ķ���
    Java 1.1�ر�ָ��,Ϊ�����Java������ֽڴ���,��ת��ΪJava
 1.0����ʱ,����ÿһ������������". "��"$"���֮��,��Ϊ���
Ա������������Ƕ�����ȫ��������ɡ�����,ÿһ����Ƕ�๹���
���յ���prepended�����еķ�װʵ���FixedStack���ӵ�Դ����
�п��Կ��������ת���ġ�
    public class FixedStack  {
       ...(the methods omitted here are unchanged)
       public java.utill.Enumeration elements()  {
         return new FixedStack$Enumerator(this);
       }
    }
    class FixedStack$Enumerator imp_ements java.util.Enumera
tion{
    private FixedStack this$0;  //saved copy  of Fixed
    FixedStack$Enumerator(FixeedStack this$0)  {
      this.this$0 = this$0;
      this.count = this$0.top;
    }
    int count;
    public boolean hasMoreElements()  {
      return count > 0;
    }
    public Object nextElement()  {
      if (count == 0)
      throw new NOSuchElementException("FixedStack");
      return this$0,array[- - count];
    }
    }
    �κ��ù�Java��C++�ӿ���ı����Ա����д�����ƵĴ���,ֻ��
���ӱ�����������Ϊ����,ͬʱ�ڶ���ӿ����г�ʼ����Java 1.1��
ǰ����һ��,��Ϊ��Ƕ���Զ���ɡ�
    ��ö����(Enumerator)��Ҫ���÷�װ���еĶ�(Top)������(Arra
y)��ʱ,����ͨ��һ��˽��(private)���ӵ���this$0����������
ƴд����Ƕ����Java 1.0����ת���IJ�������,������Գ��������
�Ĺ����ܺ����׵�ʶ����������(�󲿷ֳ���Ա����֪�����������)
��
    ��Ҫע�����,Java 1.1��������������һ����:this$0�ij�ʼ��
���ӳٵ��ϼ��๹����������Ժ�����ζ�������������ϼ�
�๹�����ִ��,���¼��෽���ƶ����ϼ����ý���ʧ�ܡ�

    �ֲ���������
    ���ڿ���˵�Ǿֲ����ඨ����Է��ʾֲ�����,����ʹ��������
�������ӻ���������һ���ֲ��������:
    Enumeration myEnumerate (final Object array[] ) {
    class E implements Enumeration  {
      int count = 0;
      public boolean hasMoreElements()
      {
        return count < array.length;
      }
      public Object nextElement()
      {
        return array[count++];
      }
    }
    return new E();
    }
    Ϊ��ʹ�ֲ�������Ƕ�෽���ɼ�,���������븴�Ƹñ�����ֵ��
����ŵ���Ƕ���ܷ��ʵĵط���ͬһ���������ÿ����ڲ�ͬ�ط�ʹ��
��ͬ�Ĵ���˳��ֻҪÿһ��������ͬ���ֵ,��ô�ڸ������ڸ���
�����й̶������������ͬһ������
    ������,��array����ľֲ��������Ը��Ƶ���Ƕ���val$array
�е�˽������(��Ϊa rray��final��,������Щ���Ʋ��ܰ���ì
�ܵ�ֵ)��ÿһ����ֵ�͵���Ƕ�๹�������,��Ϊ������ͬ�����
    ��������ɵ�ת��������ʽ:
    Enumeration myEnumerate (final Object array[] ){
      return new MyOuterClass$19(array);
    }
    ��
    class MyOuterClass$19 implements Enumeration  {
      private Object val$array[];
      int count;
      MyOuterClass$19 (Object val$array[])
      {
        this.val$array = val$array.length; count = 0;
      }
      public boolean hasMoreElements()
      {
        return count < val$array.length;
      }
      public Object nextElement()
      {
        return val$array[count++];
      }
    }
    ����ܹ�ȷ��ijһ����������Ƕ�๹�������ʹ��,�������Ϳ�
�Բ���ñ���������Ƕ����
    ע��:�ɿ鶨�����,��E,���������װ��ij�Ա,�������
�ڿ����������ʹ�þֲ�����ʱҲ��������������,����Ҳ������
�����������ʵ�����κΰ��ڿ��е���(����ֱ�ӵػ����ڲ���
�ֲ���֮��)�������ڿ����������������������Ϊ���ɷ��ʵ�
��Ϊ������,�����������ÿһ�����ɷ��ʵ������һ��Ψһ���ⲿ
�ɼ�����Щ��Ƶ���ʽ�Ǵ�����,������$�ַ�ָ�,�ٸ�������
�����,��������
    ͬ��,������Ҳ�ɱ������ϳ�,�ϳɿ�ʼ��this$,����val$�����
��������������ʹ��ģʽ��
    ��Щ��ƺ͹�������ܱ�1.1���ݵĹ�����ʶ��,��������ﵽ��
�ѵı���Ч��
    ��Щ��ֵ�"this$"��"val$"���Լ����ӵĹ�������������
���������뵽��ɵ��ֽڴ�����,���ܱ�JavaԴ����ֱ�����á�һ��,
�ֽڴ��뼶����,��MyOuterClass$19,Ҳ���ܱ�Դ������ʹ��(�����
1.1��ǰ�ı�������,�����Ƕ��һ����֪)��
    ΪʲôJava��Ҫ��Ƕ��?
    ��Java��������Դ��,���������Ǿ���ʶ����Ҫһ����"����ָ
��"����Ľṹ,���и�����ʽ,�൱��һ�������Ŀ�����ϵľ��,��
�����ö�����������,���ܹ�ʹ�á���һЩ����(��C��Lisp)��
,�����������ĵ�λ,�����ڶ���,���к���ָ�������������á���
��,ָ��ͨ����������һ��ģ���е�"�ص�"��"�¼�"����һ��ģ����
��һ�δ��롣�������������,Smalltalk����"��",�����Ǵ�����
����,����Ϊ����󡣵�����C��Lisp����ָ��ʱ,Smalltalk�������
���ӵĿ�����ģ��,���缯�ϵı���
    Java�и��ӵĿ�����ģ��,�����¼�����ͱ���,Ҳͨ����ͽӿ�
����Javaʹ�ýӿ�����ij�ַ���,�ڸ÷�������������Ҳ����ʹ
�÷����"��������"��Java����Աͨ�������Ĵ����װ��һ������
ʵ����Ҫ��Ľӿ�����,�����һ���൱�ڻص���Smalltalk��ĵȼ�
�������Ƕ��,�ӿڵ���������Smalltalk������������е��ڲ���
��һ��򵥡�Ȼ��,������Ⱥ����ӷḻ(��Ϊ�����ж����ڵ�),
����Java�ӿڶ���Ⱥ���ָ����ǿ��,��ӽṹ����
    C��Lisp��Smalltalk����Աʹ��"����ָ�� "�ı���������װ��
������,��Java����Ա���ö��󡣵���������ʹ���ض��ĺ������ͺ�
��ʾ����Ϊ��װ�ɺ���ʱ,Java��ʹ����ͽӿ����͡���Java��,"��
����Ϊ����С���"����Java�������˵,���ַ�����һ���洦�Ǽ�
���ȶ�,�������ر�֧����Ƕ�����ָ�롣
    û����Ƕ��,Java����ԱҲ�ܹ����ö��㶨��Ľӿ�����ɻص�
�ͱ���,���DZ��ܱ�׾,�ܲ�ʵ�á�������Ƕ��,Java����Ա�ܱ�д
���Ľӿ���,��������Ҫ�ĵط���ȷ����,��ֱ���������ڲ�������
����Ϳ�ķ���֮�ϡ�
    ����,��Ƕ��ʹ�ýӿ����γ�ʵ�õı����񡣽��,���Ų��ɷ�
�����ر����ⲿ�IJ��ɷ�������Ż���������,��Ƕ�ཫ�ȵȼ۵Ķ�
������������
    ΪʲôҪ������?
    ��������һ�ּ�̵ı��,ֻҪ�򵥵���"new"���ʽ�з�װ����
�Ĵ���,���ܹ����κα��ʽ�ڲ���ɼ򵥵ľֲ�����"inline"��
    ����ǰ�����ᵽ��,������ÿһ����Ƕ�඼��������,���Ǽ򵥵�
"one-shot"�ֲ�������һ�ֹ�������,���Ǿ��кܶ��﷨�ŵ㡣
    �������������дС�ķ�װ��"�ص� ",����ö�١�������ʵ�
�ȡ�����Ҳ��������������Ķ����м�����Ϊ,��AWT���(�����¼�
�ľ���������)���̡߳��������������, ����������ԴӴ���
�嵥��ȥ����
    һЩ��������,��Smalltalk��Beta,���Ǵ�Java�л�����,Ϊ��
���������ṩ�����Ƶļ�д��

    ���ڶ�̬��ӡ�ͼ���ѡ������"perform"
    Ϊ��ά��ϵͳ�Ľ�׳�ԺͰ�ȫ�Խṹ,Java��̬��ӡ����������
����,�ص�ͨ�����ò���ӡ��̬��ӡ����ʽ��C�ص�һ���벻��ӡ"
�ͻ���� "��ַһ����,��Smalltalk��ͨ����������ʱ���������
����������ʹ�����໥����,�����������ô��ݵ�˵��"perform"����
��
    Java����C����Voidָ����ӽ�ĵȼ����Ǵ�ӡ�������á���C��
����һ��,��Java�����ܹ滮��Щ"����ӡ"(untyped)���á����¼���
������һ���"����"����java.util.vector ��Ԫ������ʱ,�������
һ����ͬ�Ķ��󡣾���ִ�кķѶ�̬��ӡ���,���Dz��ò���ӡ����
ͨ�����Ǻ���Ч�ļ��ɡ�Ȼ������ȱ����̬����,���ܻ�ʹ��������
��������
    "����ָ��"�ṹ��Ӧ��,����Ӧ�ù�������JavaBeans������,
Ҫ���ܹ�����ר�ж����ϵļ�������Java Core ReflectionAPI
�е�java.lang.reflect�ṩ�����ֹ���,����һ���µ�Java 1.1 API
��

--
�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn]
Technical Details
Message-ID: <3O9iXG$tP8@bbs.nju.edu.cn>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: fc86e,b1f262cbfbeaf6b8,start
X-Google-Attributes: gidfc86e,public
From: pipishi.bbs@bbs.nju.edu.cn (���ܵ�Сʨ)
Subject: ��Ƕ����ι���?
Date: 1998/04/18
Message-ID: <3O9iXG$tP8@bbs.nju.edu.cn>
X-Deja-AN: 345408782
X-Filename: Programming/M.892912192.A
Organization: nju_bbs
Newsgroups: cn.bbs.comp.program