从其他方法传递变量值

从其他方法传递变量值,第1张

从其他方法传递变量值

代码有一些问题。首先,您看到的输出

toString()
是在
Object
类(所有类(包括
GetFractions
最终从中派生))中找到的默认实现的产物。重写此方法以返回实例的字符串表示形式:

@Overridepublic String toString() {  return ...}public static void main(String[] args) {  ...  System.out.println("..." + newFracNum1 + "...");}

或者代替传递实例以

System.out.println()
传递成员访问方法调用的结果(此类方法称为getter):

public double getSomevalue() {  return ...}public static void main(String[] args) {  ...  System.out.println("..." + newFracNum1.getSomevalue() + "...");}

注意,

double
其他基本类型将自动转换为字符串。

其次,您的静态

GetFractions()
方法修改了无效的参数(由于按值传递,因此没人会看到更改)。该方法应该修改现有实例的同名实例变量,然后不应该是静态的,或者应该是一种工厂方法,该方法根据用户提供的数据创建新实例,在这种情况下,它将值传递给构造函数或者它应该是构造函数本身。无论哪种方式,您都不想修改方法的参数。这是三种解决方案的概述:

从输入流中读取数据的非静态方法:

public void fromStream(InputStream inStream) {  // Read data from inStream into instance variables fracNum1, fracDenom1,...}

静态工厂方法:

public static GetFractions fromStream(InputStream inStream) {  int fracNum1,... ;  // Read data from inStream into local variables fracNume1, ...  return new GetFractions(fracNum1, ...);}

构造函数:

public GetFractions(InputStream inStream) {  // Read data from inStream to initialize instance variables fracNum1, fracDenom1,...}

还请注意,将an传递

InputStream
给所有这些方法比硬编码具有更大的灵活性
System.in

第三,您应该重新考虑您的命名约定。虽然可能的是,与类相同的静态方法的调用通常是一种不好的做法。此外,建议使用名词表达式调用类和对象,并使用动词表达式调用方法。这有助于设计您的类并使代码更具可读性。

GetFractions
更适合作为方法的名称而不是类。
Fractions
将使一个更好的类名。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5601558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存