Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中使用类作为方法_Java - Fatal编程技术网

在java中使用类作为方法

在java中使用类作为方法,java,Java,在Java中如何使用(如果可能)类作为方法参数 public class validators() { public int minLength(int l) { // do something } } public class formField() { public void addField(String field, validators val) { //do something } } 我希望能够做到以下几点: a

在Java中如何使用(如果可能)类作为方法参数

public class validators() {
    public int minLength(int l) {
        // do something
    } 
}

public class formField() {
    public void addField(String field, validators val) {
        //do something
    }
}
我希望能够做到以下几点:

addField("username", new validators() { 
     minLength(6);
});

有可能吗?

如果要传递当前实例,可以使用

尽管我不确定您想要实现什么,但以下代码将很好地编译:

public class Validators {
    public int minLength(int l) {
        // do something
        return 0;
    }
}

然后我们可以将其用作:

    public static void main(String[] args) {
        FormField ff = new FormField();
        ff.addField("username", new Validators() {
           int result = minLength(6);
        });
    }

它使用的是匿名派生类。

如果要将类实例作为参数传递并定义它将使用的值,则必须将此变量作为类的属性,并通过构造函数进行设置,如:

public class Validators {
    int l;

    public Validators(int l) {
        this.l = l;
    }

    public int minLength() {
        // do something
        //here you can use l variable
    }
 }

然后你可以这样称呼它:

addField("username", new Validators(6)) {
...

如果您是从同一个java文件调用它,您可能需要查看一下

,这不应该是一个问题,因为您已经声明您的方法是公共的。另外,请正确地格式化和解释一些东西,比如从哪里调用这些东西。我们不能在Java中使用
validators()
作为类名。您的示例代码离可编译还很远,我甚至不确定您真正想做什么。在同一个源文件中不能有两个公共类。正如@akhil_mittal所提到的,名称
validators()
formField()
不是有效的类名。类名也应该以大写字母开头:这是一个非常基本的编码约定。
public class FormField {
    public void addField(String field, Validators val) {
        //do something
    }
}
addField("username", new Validators(6)) {
...