将参数传递给Java中的类
问题描述:
假设我有一个类,并且我希望它的某个方法根据参数具有不同的行为。我想要做的就是这样的事(我知道这并不在Java中工作):将参数传递给Java中的类
class myClass(int a) {
public void myMethod() {
if (a == 1)
// do something
if (a == 2)
// do something else
}
}
有没有办法做到这一点?
答
你有两种方法可以做到这一点。
- 将参数传递给类构造器,并保留对其的本地引用。然后,您可以在班级的所有方法中使用它。
像这样:
class MyClass {
private final int a;
public MyClass(int a) {
this.a = a;
}
public void myMethod() {
if (a == 1)
// do something
if (a == 2)
// do something else
}
}
- 传递参数的方法,如果你打算只在该方法中使用它。
就像是:
class MyClass {
public void myMethod(int a) {
if (a == 1)
// do something
if (a == 2)
// do something else
}
}
答
参数必须传递给方法,而不是类:
class MyClass { // note that class names should start with an uppercase letter.
public void myMethod(int a) {
if (a == 1)
// do something
if (a == 2)
// do something else
}
}
答
可以在构造函数中
class MyClass {
private int a;
public MyClass(int a){
this.a = a;
}
public void myMethod() {
if (a == 1)
// do something
if (a == 2)
// do something else
}
}
答
Polymorphism通过这个参数是要走的路。首先用抽象方法myMethod()
定义基类,然后用两个类来扩展它,从而提供该方法的两种不同实现。
+0
哦不,不是!继承是邪恶的,很可能会产生不可读的代码,并且很难维护和测试。随时随地组成继承。 – Guillaume
是的,构造函数是最适合的。 – user1010399
这取决于如果这只是方法的参数,或者需要在类中多次重复使用的东西 – Guillaume
谢谢,这个作品。但是当我声明它为“private final int”时,它说“不能将值赋给最终变量hashType”。所以我宣称它是一个变量。也许我做错了什么? – hattenn