Article View: cn.bbs.comp.program
Article #1267��Ƕ����ι���?
From: ���ܵ�Сʨ
Date: Sat, 18 Apr 1998 00:00
Date: Sat, 18 Apr 1998 00:00
170 lines
13062 bytes
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
��
--
[m[1;32m�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn][m
Technical Details
Message-ID:
<3O9iXG$tP8@bbs.nju.edu.cn>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow 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