2011-06-22 103 views
1

我有我需要调用的api方法。它有10个参数。我试图创建一个拥有方法所需信息的类。那么我可以简单地将对象传递给方法吗?通过类作为参数

myAPIMethod(myClass); 

它能轻松工作吗?

+1

你的意思是传递类或类的实例的对象?如果是后者,那么是的。另外,你使用什么语言,Java,C++? –

+3

哪种语言?答案几乎肯定是“不,这不是那么简单”,但如果我们知道更多细节,我们可能会提出一些建议。你可以改变API吗? –

+0

我无法更改API,我正在使用ActionScript3。 @Zhehao:我的意思是这个班的一个实例。 – smulholland2

回答

14

不,它不会那样工作。如果一个方法有10个参数,你必须传递10个参数给它。

如果您拥有API的控制权,您可以重构它以接受单个对象。

如果没有API的控制,你可以写沿

public void CallAPI(MyClass args) 
{ 
    myAPIMethod(args.Arg1, args.Arg2); // whatever args are needed for the method 
} 

线的方法然后你的代码可以使用你的类,并且此方法来调用API。它可能比直接在您的应用程序的多个地方使用10个参数调用API方法更简洁。但是,这取决于该方法是什么以及如何使用它。

+0

我可以将CallAPI()分配给提交按钮的点击事件吗? (as3) – smulholland2

+0

@steve不幸的是,我不知道。我不熟悉ActionScript3。但我想你可以在click事件的处理程序中调用它。 –

1

您创建类的实例,称为对象,并通过对象 - 因此“面向对象编程”

如果你的方法需要10个参数,虽然,你必须通过10个参数。除非重写方法,否则不能传递包含10个参数的对象。

+1

我可以想到几个为什么我想要通过一个类作为参数的原因。那是在我想到类的对象所在的语言之前。 –

+0

@Frank Shearer - 我编辑是因为你有时想要通过一堂课,但是根据问题描述,我认为他实际上不需要通过课堂的可能性很小。 – BlackJack

1

简答:不,你不能这样做。

这不是你想要的,但是在某些语言(例如Python)中,你可以创建一个叫做partial application(有时被错误地称为currying)的东西。这允许您创建一个调用另一个函数的新函数,但是会预先指定一些参数。