如何在作为参数传递的对象上调用方法? 我知道对象通过了吗? 没有 传递的所有可能对象都有这种方法吗? 是
这就是我的意思:
public void setOwled(Obj character){
character.getIsOwled() = true;
}
getIsOwled()
是常用方法,character
是作为参数传递的object
。
setOwled()
是一个只有1个类的方法,它应该改变作为参数传递的对象的mVariable
。
答案 0 :(得分:1)
我不确定这是否是你想要的,但也许你会发现它很有用:
这里的技巧是确切地知道Object作为参数传递给方法的是什么,该方法将决定一旦收到该特定对象将会做什么。
通常,在编码过程中,您确切地知道将要传递给您创建的方法的对象,因此将该参数显式声明为该特定的对象类型(例如String,int,double等),但确实有时间当你想要一个方法接受一个参数时,它可以是几个对象类型中的任何一个。这是最简单的部分,更难以确切知道每个对象类型实际命名的内容。变量类型(如String,Integer,Double,Float等)并不那么困难......但对于更复杂的对象,如控件,类等等。如果您已经使用Java一段时间了,那么您就不会去对此有疑问。
让我们创建一个小方法,它将确定作为参数传递给它的特定对象的类型名称:
public static String objectType(final Object objectVar) {
try {
// I like to turn Object Type names to Uppercase
// so everything returned by this method will be
// in Uppercase.
return objectVar.getClass().getSimpleName().toUpperCase();
}
catch (Exception ex) {
System.out.println("\u001B[31m" +
"objectType() Method Exception - Unknown Object Type!" +
"\u001B[31m");
return "";
}
}
现在我们可能需要使用这个新的objectType()方法:
public void setOwled(Object argument){
switch (objectType(argument)) {
case "STRING":
System.out.println("argument contains a String object type - " + argument.toString());
break;
case "INTEGER":
System.out.println("argument contains a Integer object type - " + (int) argument);
break;
case "DOUBLE":
System.out.println("argument contains a Double object type - " + (double) argument);
break;
case "BOOLEAN":
System.out.println("argument contains a Boolean object type - " + (boolean) argument);
break;
case "JBUTTON":
System.out.println("argument holds reference to a JButton object - " + argument);
break;
}
}
显然有很多对象类型名称,但你只需要担心你想要为你的特定方法专门处理的那个。
我希望你发现这很有用,如果不是至少......有趣。
答案 1 :(得分:0)
混合方法调用和属性设置。
我认为你的意思是这样的:
class myObject1 {
public String myName = "";
// constructor - no return value
public myObject1 (String aName) {
this.myName = aName;
}
public void printMyName() {
System.out.println("Object 1: My Name is: " + this.myName);
}
}
class myObject2 {
public String myName = "";
// constructor - no return value
public myObject2 (String aName) {
this.myName = aName;
}
public void printMyName() {
System.out.println("Object 2: My Name is: " + this.myName);
}
}
class runClass {
public static void main(String[] args) {
Object [] elements = new Object[2];
elements[0] = new myObject1("Jon Doe");
elements[1] = new myObject2("Mr. Smith");
for (int i = 0; i < elements.length; i++) {
runClass.workOnElement(elements[i]);
}
}
public static void workOnElement (Object theElem) {
if (theElem instanceof myObject1) {
myObject1 elem = (myObject1) theElem;
elem.printMyName();
} else if (theElem instanceof myObject2) {
myObject2 elem = (myObject2) theElem;
elem.printMyName();
}
}
}
打印:
Object 1: My Name is Jon Doe
Object 2: My Name is Mr. Smith