Javaでは、メソッド/コンストラクタ宣言を別のメソッド/コンストラクタ宣言内に表示できますか?例:Javaでは、メソッド/コンストラクタ宣言は、別のメソッド/コンストラクタ宣言の中に現れますか?
void A() {
int B() { }
}
私は思っていませんが、私は安心しています。
Javaでは、メソッド/コンストラクタ宣言を別のメソッド/コンストラクタ宣言内に表示できますか?例:Javaでは、メソッド/コンストラクタ宣言は、別のメソッド/コンストラクタ宣言の中に現れますか?
void A() {
int B() { }
}
私は思っていませんが、私は安心しています。
いいえ。コンパイルできません。
最初の回答が授与されました。 –
いいえ、Javaでは、メソッドは別のメソッド内ではなくクラス内でのみ定義できます。
ない直接、しかし、あなたはは、メソッド内のクラスのメソッドを持つことができます。
class A {
void b() {
class C {
void d() {
}
}
}
}
はい、私はその可能性を認識しています。 +1 –
これは、Javaで可能ではありません。しかし、コードは複雑になりますが、これはインタフェースで実現できます。
interface Block<T> {
void invoke(T arg);
}
class Utils {
public static <T> void forEach(Iterable<T> seq, Block<T> fct) {
for (T elm : seq)
fct.invoke(elm);
}
}
public class MyExample {
public static void main(String[] args) {
List<Integer> nums = Arrays.asList(1,2,3);
Block<Integer> print = new Block<Integer>() {
private String foo() { // foo is declared inside main method and within the block
return "foo";
}
public void invoke(Integer arg) {
print(foo() + "-" + arg);
}
};
Utils.forEach(nums,print);
}
}
あなたは正しいと思います。 –
コンストラクタ内のコンストラクタに対してさえも? –
ポイントは何ですか?コンストラクタは、他のコンストラクタのインスタンスではなく、クラスのインスタンスを作成します:) –