2017-08-02 41 views
0

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

这是我到目前为止已经无济于事试图....

// 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 // 
+0

请出示'Color'源 –

+0

这是颜色C =新的色彩(红,绿,蓝)或本 的System.out.println(c.red);导致问题? – JFPicard

+0

请注意'c.red'不会**指向颜色对象的内部红色值。它宁可指向表示全红色*(255,0,0)*的常量“颜色”对象。该变量是** static **,因此它应该由'Color.red'而不是'c.red'引用,因为它不是'c'对象的成员,而是'Color'类。如果你想访问c对象的红色属性,那么你应该使用'c.getRed()'。就像一个注释,'Color'还为所有类型的颜色定义了其他常量,例如'Color.BLACK'或'Color.LIGHTBLUE'。 – Zabuza

回答

2

找到该信息的最好的地方通常是Java文档中 - 为Color类你可以找到它here

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

+0

我可以在不创建新访问器的情况下获取值吗? – samgrey

+0

你是什么意思?如果您使用的是Java Color类,则访问器是类的一部分,您只需要有一个Color对象。 – Nkdy

+1

如果这是个问题,你不需要自己创建这样的方法。这个* getter-methods *是Color类的一部分。 – Zabuza

1

使用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()); 

    } 
} 
+0

有没有办法做到这一点,没有每种颜色的新访问器? – samgrey

+0

你能改述这个问题吗?上述代码有什么问题? Color类没有直接访问其内部,它们被标记为** package visible **。因此他们提供这种**吸气剂**方法。请注意,“颜色”对象甚至不会按照您的想法记住颜色。它使用字节操作将它们高效地存储在一个'int'内,如下所示:http://i.imgur.com/xKjN2rc.jpg。您可以自己查看整个源代码,例如:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/awt/Color的.java – Zabuza

相关问题