2013-04-20 141 views
0

我正在将一些代码从Java(我对此语言一无所知)移植到C中。由于Java是类C语言,所以在转换大多数语句时我没有任何问题。但是我不知道代码的某些部分是什么意思。它调用一个Java类的功能,并通过作为参数:调用一个类作为一个函数是什么意思?

假设类是:

public class foo { 
    public foo(Typex x) { //etc } 
} 

public class baa { 
    public baa(Typex x) { //etc } 
} 

从另一个类,它被称为是:new foo(baa())

是什么意思?

+2

这是一个构造函数。 – 2013-04-20 00:29:37

+2

端口的第一条规则:如果你不知道它做了什么,你不能移植它。 – Makoto 2013-04-20 00:29:41

+0

@Makoto:这是语言中使用的特性的依赖。例如,在这个Java程序中不使用滥用关键字,因为它很简单。 – Jack 2013-04-20 00:34:30

回答

2

这是不对的! 新富(BAA())

你不能在Java中做到这一点,而不是你需要做的是

new foo(new baa().bar()) . 

这意味着你首先创建BAA和呼叫条的引用(对象)()该参考的方法。在Java中记住新的关键字是从类中创建新的参考。它调用该类的构造函数方法并为该引用分配内存。

在上面的例子中,它将从bar()方法返回的任何东西作为参数传递给foo类,并依次创建foo类的引用。

这是一个良好的开端: [1]:http://docs.oracle.com/javase/tutorial/java/javaOO/index.html

2

它被称为构造函数。见here

public class Foo { 
    public foo(Typex x) { //etc } 
} 

public class Baa { 
public baa(Typex x) { //etc } 
} 

Foo f = new Foo(x); // Creates a new instance of Foo. 
Baa b = new Baa(x); // Creates a new instance of Baa. 
+0

没有'new'关键字会返回什么? – Jack 2013-04-20 00:31:31

+1

@Jack当你尝试过时发生了什么? – 2013-04-20 00:33:21

+0

我无法在这里获得java编译器。 – Jack 2013-04-20 00:38:22

0

这是一个构造 - 这一点,使创建新的对象更容易的小东西。你可以做

Object Name = new Object(Param1, Param2); 

,而不是

Object Name = new Object(); 
Name.Param1 = foo; 
Name.Param2 = bar; 
+1

所以'new obj()'和'obj()'是一样的吗? – Jack 2013-04-20 00:32:18

+0

@Jack显然不是;你怎么得出这个结论? – 2013-04-20 00:33:55

+1

我真的不明白。我在问什么是'new foo(baa())',其中'baa()'是'class'。 – Jack 2013-04-20 00:36:50

相关问题