Not true for Java about Function Hijacking.

Matthew Ong ongbp at yahoo.com
Mon May 23 02:22:53 PDT 2011


Hi Digitalmars/Walter Bright,


http://www.digitalmars.com/d/2.0/hijack.html

This talk covers function hijacking, where adding innocent and 
reasonable declarations in a module can wreak arbitrary havoc on an 
application program in C++(maybe true) and Java(not true).

Since I have not done C++ for a long while, I am not going to comment 
about that. But Java I have to place this request for correction from 
DigitalMars.

javac(from sun) Compiler will complain if there is an ambiguous to link 
any indentifier that has the same signature for contructor, 
methods(static/overloaded/overriden)

Overload Sets
Java denys global functions. All functions/methods are within a single 
class. Within the same class, the overloaded methods cannot have the 
same signature.

public class MyClass{

public int myVal(){
}

public String myVal(){ // compiler will complain here as error and NOT 
warning.
}
}

Both the method identifier and zero param list makes a identical signature.

Derived Class Member Function Hijacking
IDE like Netbeans and does flag:

@override
public void myMethodA(){ // Say you did not use the override tag
}



Base Class Member Function Hijacking
to prevent the child class from stealing your implementation for this 
single method, do:

public final void myMethodA(){ // final == sealed in C#
}


That is shown clearly when you tries to import both this 2 classes 
within Java:
import java.util.Date;
import java.sql.Date;

public class MyTest{
	public static void main(String[] args){
  		Date now=new Date(); // thinking that you are using java.util.Date;
	}
}


Again, as a senior Java Developer since java jdk 1.1 I agrees D as a 
good replacement for C++ because of modern design and approaches.

Kindly correct that to avoid confusing the new Java to D developer.

There are also other run time intelligent build into JVM to avoid 
malicious hacker attack on such thing using class proxy & stub.

-- 
Matthew Ong
email: ongbp at yahoo.com



More information about the Digitalmars-d-learn mailing list