【问题标题】:How to call RBG parameters from object in Java如何从Java中的对象调用RBG参数
【发布时间】:2017-08-02 19:06:12
【问题描述】:

我正在为 Color 类中的对象编写访问器。我想返回与对象关联的红色、绿色和蓝色值的总和。有没有办法调用我创建的对象的参数?

这是我迄今为止尝试过的无济于事......

//  Sample  //



int red = 200;
int green = 51;
int blue = 76;

Color c = new Color(red, green, blue);
System.out.println(c.red);
System.out.println(c.green);
System.out.println(c.blue);

// The above gives a compile error //

【问题讨论】:

  • 请显示Color来源
  • 这个颜色 c = new Color(red, green, blue) 还是这个 System.out.println(c.red);引起问题?
  • 请注意,c.red 确实指向颜色对象的内部红色值。而是指向常量Color 对象,该对象代表全红色(255, 0, 0)。该变量是static,因此它应该被Color.red 引用而不是c.red,因为它不是c 对象的成员,而是Color 类的成员。如果您想访问c 对象的红色属性,那么您应该使用c.getRed()。请注意,Color 还为各种颜色定义了其他常量,例如 Color.BLACKColor.LIGHTBLUE
  • 对于未来的问题,请始终包括确切的错误消息。它包含代码的哪一部分实际引发错误的信息。

标签: java colors


【解决方案1】:

查找此信息的最佳位置通常是在 Java 文档中 - 对于 Color 类,您可以在 here 中找到它。

要回答您的问题,如果您有一个 Color 对象,您应该能够调用 c.getBlue()、c.getRed() 和 c.getGreen(),它们应该以整数形式返回。

【讨论】:

  • 我可以在不创建新访问器的情况下获取值吗?
  • 什么意思?如果您使用的是 Java Color 类,则访问器是该类的一部分,您只需要一个 Color 对象。
  • 你不需要自己创建这样的方法,如果这是问题的话。这个 getter-methodsColor 类的一部分。
【解决方案2】:

使用 getRed()、getGreen()、getBlue()。

import java.awt.*;

public class colors123 {
public static void main (String args[]) {
    int red = 200;
    int green = 51;
    int blue = 76;

    Color c = new Color(red, green, blue);
    System.out.println(c.getRed());
    System.out.println(c.getGreen());
    System.out.println(c.getBlue());
    System.out.println(c.getRed()+c.getGreen()+c.getBlue());

    }
}

【讨论】:

  • 有没有办法在不为每种颜色添加新访问器的情况下做到这一点?
  • 你能重新表述一下这个问题吗?上面的代码有什么问题? Color 类不提供对其内部的直接访问,它们被标记为 package visible。因此他们提供了这种 getter 方法。请注意,Color 对象甚至不会像您想象的那样记住颜色。它使用字节操作将它们有效地存储在一个int 中,如下所示:i.imgur.com/xKjN2rc.jpg。您可以自己查看整个源代码,例如这里:grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
  • 2010-11-13
  • 2013-01-18
  • 1970-01-01
  • 2012-07-14
  • 2016-10-11
  • 2016-10-02
相关资源
最近更新 更多