他の人が言ったように、メソッドに静的にアクセスする場合は、インスタンスは必要ないため、パラメーターはまったく必要ありませんTestClass#getName
。ただし、それをインスタンス メソッドにしたい場合は、次の 3 つのいずれかを行うことができます。
1) タイプ TestClassTwo
in を取り込む TestClass#getName
:
public class TestClass {
public void getName(TestClassTwo obj) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
String name = obj.getTwoName();
// Do something with 'name'
}
public static void main(String args[]) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
TestClass tc=new TestClass();
tc.getName(new TestClassTwo());
}
}
2) オブジェクトを のインスタンスにキャストし TestClassTwo
、型を確認します。
public class TestClass {
public void getName(Object obj) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
if (obj instanceof TestClassTwo) {
TestClassTwo two = (TestClassTwo) obj;
String name = two.getTwoName();
// Do something with 'name'
} else {
// Handle failure accordingly (throw an exception, log an error, do nothing, etc.)
}
}
public static void main(String args[]) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
TestClass tc=new TestClass();
tc.getName(new TestClassTwo());
}
}
3) 他のクラスに関数を持たせたい場合は getTwoName()
、インターフェイスを定義し、そのインターフェイスのインスタンスをパラメーターとして次のように受け取ります TestClass#getName
。
public interface HasTwoName {
public String getTwoName();
}
public class TestClassTwo implements HasTwoName {
@Override
public String getTwoName() {
return "2nd";
}
}
public class TestClass {
public void getName(HasTwoName obj) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
String name = two.getTwoName();
// Do something with 'name'
}
public static void main(String args[]) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
TestClass tc=new TestClass();
tc.getName(new TestClassTwo());
}
}