2 Newbee questions

C

Christian

Hello

1. When I have an Class FooBar implementing the interfaces Foo and Bar

if some other class has the two methods
1. void doSomething(Foo foo) {}
2. void doSomething(Bar bar) {}


Which method will be called when I give an instance of FooBar as
parameter? Where is the best place to search for answers on such
questions maybe Language-Specifications?


2. If I write a program that is made for opening some filetype, and I
wan't only one instance of my program to be open i.e. open some tab in
running instance myself when the user doubleclicks on a file ...

Is there some easy solution to do this in java or do I need to create
for example a tcp connection to my running instance and tell it the file
parameter that way?

Thanks for any Help
C.O.
 
I

Ingo R. Homann

Hi,
Hello

1. When I have an Class FooBar implementing the interfaces Foo and Bar

if some other class has the two methods
1. void doSomething(Foo foo) {}
2. void doSomething(Bar bar) {}

Which method will be called when I give an instance of FooBar as
parameter? Where is the best place to search for answers on such
questions maybe Language-Specifications?

I think, *here* is a good place. Or perhaps better in c.l.j.help.

The answer is: You will get a compiler-error, when trying
doSomething(new FooBar()). Note that doSomething((Foo)new FooBar())
should be possible, because the 'static type' (of the reference) is
important, and not the 'dynamic type' (of the referenced Object).
2. If I write a program that is made for opening some filetype, and I
wan't only one instance of my program to be open i.e. open some tab in
running instance myself when the user doubleclicks on a file ...

Is there some easy solution to do this in java or do I need to create
for example a tcp connection to my running instance and tell it the file
parameter that way?

No, a ServerSocket is the best solution. A lock-File is another solution
but has obvious disadvantages.

Hth,
Ingo
 
C

Chris Uppal

Christian said:
1. When I have an Class FooBar implementing the interfaces Foo and Bar

if some other class has the two methods
1. void doSomething(Foo foo) {}
2. void doSomething(Bar bar) {}


Which method will be called when I give an instance of FooBar as
parameter?

The compiler should reject it as ambiguous, since there are two equally
"suitable" candidate methods. To force it to choose one or the other you
should use a cast, or a temporary variable of one or the other type.

Where is the best place to search for answers on such
questions maybe Language-Specifications?

The JLS is indeed the place to look for such details. In this case you'd want
section 15.12, Method Invocation Expressions. Be warned: that section is both
long and complex.


-- chris
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top