标签: accessor

Java中的Getters/setter

我是Java新手,但对ActionScript 3有一些OOP经验,所以我试图依靠我所知道的东西进行迁移.

在ActionScript 3中,您可以使用get和set关键字创建getter和setter,这意味着您在类中创建方法并通过该类的实例的属性访问数据.我可能听起来很复杂,但事实并非如此.这是一个例子:

class Dummy{

    private var _name:String;

    public function Dummy(name:String=null){
        this._name = name;
    }

    //getter
    public function get name():String{
        return _name;
    }

    //setter
    public function set name(value:String):void{
    //do some validation if necessary
        _name = value;
    }

}
Run Code Online (Sandbox Code Playgroud)

我会name在一个对象中访问:

var dummy:Dummy = new Dummy("fred");
trace(dummy.name);//prints: fred
dummy.name = "lolo";//setter
trace(dummy.name);//getter
Run Code Online (Sandbox Code Playgroud)

我怎么用Java做到这一点?

只是拥有一些公共领域是不可能的.我注意到有一种在方法前面使用get和set的约定,我很好.

例如,

class Dummy{

    String _name;

    public void Dummy(){}

    public void Dummy(String name){
        _name = name;
    }

    public String getName(){
        return _name;
    }

    public void setName(String …
Run Code Online (Sandbox Code Playgroud)

java getter setter accessor actionscript-3

22
推荐指数
2
解决办法
4万
查看次数

在一个类中混合attr_accessor和initialize方法

我看到代码如下:

class Person
  def initialize(name)
    @name = name
  end
end
Run Code Online (Sandbox Code Playgroud)

我明白这一点让我做这样的事情person = Person.new,并用@name在我的课像其他方法中的别处.然后,我看到代码如下:

class Person
  attr_accessor :name
end

...

person = Person.new
person.name = "David"
Run Code Online (Sandbox Code Playgroud)

我只是对这两种方法网格感到茫然.有什么特别的用途def initialize(name)?我想attr_accessor允许我读写.这意味着它们是两种不同的方法.是?希望在澄清def initializeattr_accessor他们如何网状.

ruby initialization accessor

22
推荐指数
3
解决办法
2万
查看次数

C#中的"只读"属性访问器

我有以下课程:

class SampleClass
{
   private ArrayList mMyList;

   SampleClass()
   {
       // Initialize mMyList
   }

   public ArrayList MyList
   {
       get { return mMyList;}
   }
}
Run Code Online (Sandbox Code Playgroud)

我希望用户能够获得mMyList,这就是我通过属性公开"获取"的原因,但是我不希望他们对对象做出更改(即.MyList.Add(new Class());)以使其成为回到我班上的路.

我想我可以返回对象的副本,但这可能很慢,我正在寻找一种方法,它将提供编译时错误,通知用户他们不应该期望能够修改返回的值属性.

这可能吗?

.net c# properties accessor readonly

19
推荐指数
3
解决办法
3万
查看次数

具有不同设置和获取类型的访问器?

简单的问题,希望是一个简单的答案:

我想做以下事情:

private DateTime m_internalDateTime;
public var DateTimeProperty
{
   get { return m_internalDateTime.ToString(); } // Return a string
   set { m_internalDateTime = value; } // here value is of type DateTime
}
Run Code Online (Sandbox Code Playgroud)

以上只是我想要做的一个例子.我想要一个x类型的内部变量的公共访问器.我希望将该变量作为字符串获取,但使用x类型设置它.

这可能吗?

- 编辑 -

我才意识到我可以做一些像:

private DateTime m_internalDateTime;
public object DateTimeProperty
{
   get { return m_internalDateTime.ToString(); } // Return a string
   set { m_internalDateTime = (DateTime)value; } // here value is of type DateTime
}
Run Code Online (Sandbox Code Playgroud)

但是,假设我使用类型y而不是"字符串"作为我的"获取"类型.如果我想在我的代码中使用"DateTimeProperty",我必须抛出它.

c# variables types accessor

19
推荐指数
3
解决办法
2万
查看次数

有没有办法在C++中不存在时自动生成getter和setter?

我对Objective-C很有经验,在Objective-C中你可以让编译器为你生成getter和setter(如果它们还没有存在@synthesize).

有没有办法在C++中执行此操作,还是我需要自己实现所有getter和setter?

c++ oop getter setter accessor

19
推荐指数
3
解决办法
3万
查看次数

attr_accessor强类型Ruby on Rails

只是想知道是否有人能够在Ruby on Rails中对getter setter的基础知识进行一些了解,并提供强类型视图.我对rails上的ruby非常新,并且主要对.NET非常了解.

例如,我们假设我们有一个名为Person的.net类

class Person
{
 public string Firstname{get;set;}
 public string Lastname{get;set;}
 public Address HomeAddress{get;set;}
}

class Address
{
 public string AddressLine1{get;set;}
 public string City{get;set;}
 public string Country{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

在Ruby中,我会写这个

class Person
 attr_accessor :FirstName
 attr_accessor :LastName
 attr_accessor :HomeAddress
end

class Address
 attr_accessor :AddressLine1
 attr_accessor :City
 attr_accessor :Country
end
Run Code Online (Sandbox Code Playgroud)

查看Person类的Ruby版本如何指定访问器方法FirstName,LastName和HomeAddress的类型?如果我要使用这个类,我可以将任何类型提供给HomeAddress,但我希望这个访问器方法只接受TYPE地址.

有什么建议 ?

谢谢

ruby ruby-on-rails accessor attr-accessor

17
推荐指数
2
解决办法
7624
查看次数

访问者应该返回值还是常量引用?

假设我有一个Foostd::string成员的班级str.应该get_str返回什么?

std::string Foo::get_str() const
{
    return str;
}
Run Code Online (Sandbox Code Playgroud)

要么

const std::string& Foo::get_str() const
{
    return str;
}
Run Code Online (Sandbox Code Playgroud)

什么是C++更惯用?

c++ reference accessor return-value

16
推荐指数
3
解决办法
8640
查看次数

访问者的目的是什么?

有人可以帮我理解get&set
他们为什么需要?我可以创建一个公共变量.

c# properties class accessor

16
推荐指数
2
解决办法
2万
查看次数

C#中的属性

为什么我们能写

public int RetInt
{
   get;set;
}
Run Code Online (Sandbox Code Playgroud)

代替

public int RetInt
{
   get{return someInt;}set{someInt=value;}
}
Run Code Online (Sandbox Code Playgroud)

两者有什么区别?

c# properties accessor

16
推荐指数
2
解决办法
1018
查看次数

Java:访问资源和Demeter法则

概观

在我的(Android)Java游戏中,我有一个名为resources的类.顾名思义,这个班级掌握了游戏的资源.我在这里创建了所有的OpenGL对象(Sprite)

它看起来像下面的内容(显然,这是一个简化的版本,与真实项目中出现的版本相比):

public class Resources {

    Hero hero;
    Enemy enemy;
    MenuButtons mainMenuButtons;
    Background background;
    Scene mainMenu;

    public void createObjects(){

        hero = new Hero();
        enemy = new Enemy();
        mainMenuButtons = new MenuButtons();
        background = new Background();
        mainMenu = new Scene(this);

    }
}
Run Code Online (Sandbox Code Playgroud)

所以,在我的mainMenu场景中,我需要访问我的对象,所以我们可能会看到这样的东西:

public class mainMenu implements Scene {

    Resources resources;

    public mainMenu(Resources resources){

        this.resources = resources;

    }

    @Override
    public void render(){

        resources.background.draw();
        resources.hero.draw();
        resources.enemy.draw();
        mainMenuButtons.draw();           

    }

    @Override
    public void updateLogic(){

        resources.hero.move();
        resources.enemy.move();
        resources.mainMenubuttons.animate();
    }

} …
Run Code Online (Sandbox Code Playgroud)

java resources android accessor law-of-demeter

16
推荐指数
1
解决办法
494
查看次数