Hex Artifact Content
Not logged in

Artifact d0ebc1264a588314e35cdbc6fe76133afa7d9100:


0000: 2f 2a 0a 20 2a 20 4d 65 74 68 6f 64 49 6e 76 6f  /*. * MethodInvo
0010: 6b 65 72 34 2e 6a 61 76 61 20 2d 2d 0a 20 2a 0a  ker4.java --. *.
0020: 20 2a 20 74 63 6c 6a 61 76 61 2f 74 65 73 74 73   * tcljava/tests
0030: 2f 73 69 67 6e 61 74 75 72 65 2f 4d 65 74 68 6f  /signature/Metho
0040: 64 49 6e 76 6f 6b 65 72 34 2e 6a 61 76 61 0a 20  dInvoker4.java. 
0050: 2a 0a 20 2a 20 43 6f 70 79 72 69 67 68 74 20 28  *. * Copyright (
0060: 63 29 20 31 39 39 38 20 62 79 20 4d 6f 73 65 73  c) 1998 by Moses
0070: 20 44 65 4a 6f 6e 67 0a 20 2a 0a 20 2a 20 53 65   DeJong. *. * Se
0080: 65 20 74 68 65 20 66 69 6c 65 20 22 6c 69 63 65  e the file "lice
0090: 6e 73 65 2e 74 65 72 6d 73 22 20 66 6f 72 20 69  nse.terms" for i
00a0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 75 73  nformation on us
00b0: 61 67 65 20 61 6e 64 20 72 65 64 69 73 74 72 69  age and redistri
00c0: 62 75 74 69 6f 6e 0a 20 2a 20 6f 66 20 74 68 69  bution. * of thi
00d0: 73 20 66 69 6c 65 2c 20 61 6e 64 20 66 6f 72 20  s file, and for 
00e0: 61 20 44 49 53 43 4c 41 49 4d 45 52 20 4f 46 20  a DISCLAIMER OF 
00f0: 41 4c 4c 20 57 41 52 52 41 4e 54 49 45 53 2e 0a  ALL WARRANTIES..
0100: 20 2a 0a 20 2a 20 52 43 53 3a 20 40 28 23 29 20   *. * RCS: @(#) 
0110: 24 49 64 3a 20 4d 65 74 68 6f 64 49 6e 76 6f 6b  $Id: MethodInvok
0120: 65 72 34 2e 6a 61 76 61 2c 76 20 31 2e 32 20 32  er4.java,v 1.2 2
0130: 30 30 32 2f 31 32 2f 32 37 20 31 34 3a 33 33 3a  002/12/27 14:33:
0140: 32 30 20 6d 64 65 6a 6f 6e 67 20 45 78 70 20 24  20 mdejong Exp $
0150: 0a 20 2a 0a 20 2a 2f 0a 0a 70 61 63 6b 61 67 65  . *. */..package
0160: 20 74 65 73 74 73 2e 73 69 67 6e 61 74 75 72 65   tests.signature
0170: 3b 0a 0a 69 6d 70 6f 72 74 20 6a 61 76 61 2e 75  ;..import java.u
0180: 74 69 6c 2e 2a 3b 0a 0a 70 75 62 6c 69 63 20 63  til.*;..public c
0190: 6c 61 73 73 20 4d 65 74 68 6f 64 49 6e 76 6f 6b  lass MethodInvok
01a0: 65 72 34 20 7b 0a 0a 20 20 70 75 62 6c 69 63 20  er4 {..  public 
01b0: 73 74 61 74 69 63 20 53 74 72 69 6e 67 20 63 61  static String ca
01c0: 6c 6c 28 41 20 6f 62 6a 29 20 7b 0a 20 20 20 20  ll(A obj) {.    
01d0: 72 65 74 75 72 6e 20 22 41 22 3b 0a 20 20 7d 0a  return "A";.  }.
01e0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
01f0: 53 74 72 69 6e 67 20 63 61 6c 6c 28 49 20 6f 62  String call(I ob
0200: 6a 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20  j) {.    return 
0210: 22 49 22 3b 0a 20 20 7d 0a 20 20 0a 20 20 70 75  "I";.  }.  .  pu
0220: 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 65  blic static inte
0230: 72 66 61 63 65 20 49 20 7b 7d 0a 20 20 70 75 62  rface I {}.  pub
0240: 6c 69 63 20 73 74 61 74 69 63 20 63 6c 61 73 73  lic static class
0250: 20 41 20 7b 7d 0a 20 20 70 75 62 6c 69 63 20 73   A {}.  public s
0260: 74 61 74 69 63 20 63 6c 61 73 73 20 42 20 69 6d  tatic class B im
0270: 70 6c 65 6d 65 6e 74 73 20 49 20 7b 7d 0a 20 20  plements I {}.  
0280: 0a 0a 20 20 70 75 62 6c 69 63 20 73 74 61 74 69  ..  public stati
0290: 63 20 41 20 67 65 74 41 28 29 20 7b 0a 20 20 20  c A getA() {.   
02a0: 20 72 65 74 75 72 6e 20 6e 65 77 20 41 28 29 3b   return new A();
02b0: 0a 20 20 7d 0a 0a 20 20 70 75 62 6c 69 63 20 73  .  }..  public s
02c0: 74 61 74 69 63 20 42 20 67 65 74 42 28 29 20 7b  tatic B getB() {
02d0: 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20  .    return new 
02e0: 42 28 29 3b 0a 20 20 7d 0a 0a 20 20 70 75 62 6c  B();.  }..  publ
02f0: 69 63 20 73 74 61 74 69 63 20 49 20 67 65 74 49  ic static I getI
0300: 28 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20  () {.    return 
0310: 6e 65 77 20 42 28 29 3b 0a 20 20 7d 0a 0a 20 20  new B();.  }..  
0320: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
0330: 69 64 20 6d 61 69 6e 28 53 74 72 69 6e 67 5b 5d  id main(String[]
0340: 20 61 72 67 76 29 20 7b 0a 0a 20 20 20 20 41 20   argv) {..    A 
0350: 61 20 3d 20 67 65 74 41 28 29 3b 0a 20 20 20 20  a = getA();.    
0360: 42 20 62 20 3d 20 67 65 74 42 28 29 3b 0a 20 20  B b = getB();.  
0370: 20 20 49 20 69 20 3d 20 67 65 74 49 28 29 3b 0a    I i = getI();.
0380: 20 20 20 20 0a 20 20 20 20 53 74 72 69 6e 67 20      .    String 
0390: 73 3b 0a 20 20 20 20 0a 20 20 20 20 73 20 3d 20  s;.    .    s = 
03a0: 63 61 6c 6c 28 61 29 3b 20 2f 2f 73 68 6f 75 6c  call(a); //shoul
03b0: 64 20 72 65 74 75 72 6e 20 22 41 22 0a 20 20 20  d return "A".   
03c0: 20 70 28 73 29 3b 0a 20 20 20 20 0a 20 20 20 20   p(s);.    .    
03d0: 73 20 3d 20 63 61 6c 6c 28 69 29 3b 20 2f 2f 73  s = call(i); //s
03e0: 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 22 49 22  hould return "I"
03f0: 0a 20 20 20 20 70 28 73 29 3b 0a 0a 20 20 20 20  .    p(s);..    
0400: 73 20 3d 20 63 61 6c 6c 28 62 29 3b 20 2f 2f 73  s = call(b); //s
0410: 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 22 49 22  hould return "I"
0420: 0a 20 20 20 20 70 28 73 29 3b 0a 0a 20 20 7d 0a  .    p(s);..  }.
0430: 0a 0a 20 20 70 75 62 6c 69 63 20 73 74 61 74 69  ..  public stati
0440: 63 20 76 6f 69 64 20 70 28 53 74 72 69 6e 67 20  c void p(String 
0450: 61 72 67 29 20 7b 0a 20 20 20 20 53 79 73 74 65  arg) {.    Syste
0460: 6d 2e 6f 75 74 2e 70 72 69 6e 74 6c 6e 28 61 72  m.out.println(ar
0470: 67 29 3b 0a 20 20 7d 0a 0a 7d 0a                 g);.  }..}.