标签: setter

您经常看到滥用C#速记吸气剂/孵化器?

在C#中,您可以以比其他语言更简单的方式创建getter/setter:

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

这将创建一个内部私有变量,您无法直接使用外部属性"FooBar"直接访问它.

我的问题是 - 你多久经常看到这种滥用?它似乎很有可能经常违反封装最佳实践.不要误解我的意思,我会酌情使用它,并为只读的只写类型的属性使用它的部分变体,但是你的代码库中的其他作者对它的不愉快经历是什么?

澄清:当私人变量合适时,滥用的预期定义确实会产生这样的属性.

c# getter setter encapsulation automatic-properties

7
推荐指数
1
解决办法
3757
查看次数

在JSP/Java中,如何通过s.th替换getter/setter.更通用?

我厌倦了在豆子里一直加入大量的吸气剂/杀菌剂.有没有一种简单的方法来使用注释来摆脱这种愚蠢的工作?或任何其他方式?第二个例子是我希望运行的简短版本,因为不需要封装我的成员(尽管在另一个上下文中它可能是必要的).在我的现实世界中,我必须访问大约15个类,每个类中有大约10个数据成员,这将产生300个无用的setter/getter.

示例TestPerson.java(有效):

public class TestPerson {
  public String firstName;
  public String lastName;
  public TestPerson() {
    firstName = "Hugo";
  }
  public String getFirstName() {
    return firstName;
  }
  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }
  public String getLastName() {
    return lastName;
  }
  public void setLastName(String lastName) {
    this.lastName = lastName;
  }
}
Run Code Online (Sandbox Code Playgroud)

示例TestPerson.java(不起作用):

public class TestPerson {
  public String firstName;
  public String lastName;
  public TestPerson() {
    firstName = "Hugo";
  }
}
Run Code Online (Sandbox Code Playgroud)

示例test.jsp

<jsp:useBean id="testperson" class="test.TestPerson" scope="request" />
<html>
<head><title>Test</title></head>
<body> …
Run Code Online (Sandbox Code Playgroud)

java getter setter

7
推荐指数
2
解决办法
1845
查看次数

是否使用grails中的getter和setter?

如果你在grails项目中有一个域类,你也可以使用getter和setter来编写或读取它们.

例如,域类Book具有以下属性:

String author
Run Code Online (Sandbox Code Playgroud)

在控制器中你有一本书,你想为这本书设置作者:这可以直接访问属性,也可以使用getter和setter方法,尽管它们不在类中.

book.author = "Mike Miller"
book.setAuthor("Mike Miller")
Run Code Online (Sandbox Code Playgroud)

在groovy和grails中获取和设置属性的首选方法是什么?

getter setter grails groovy

7
推荐指数
1
解决办法
5550
查看次数

如何使用属性名识别setter方法?

我们可以使用属性名称找到setter方法名称吗?

我有一个动态生成的 map<propertyName,propertyValue>

通过使用map中的键(这是propertyName),我需要为object调用适当的setter方法并传递map中的值(即propertyValue).

class A {
    String name;
    String age;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getCompany() {
        return company;
    }
    public void setCompany(String company) {
        this.company = company;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的地图包含两个项目:

map<"name","jack">
map<"company","inteld">
Run Code Online (Sandbox Code Playgroud)

现在我正在迭代地图,当我从地图继续处理每个项目时,基于密钥(名称或公司),我需要调用类A的适当的setter方法,例如,对于第一项,我将名称作为键,因此需要调用新的A ().setName.

java reflection setter

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

构造函数中的setter方法

得到一个我遇到的问题

public class Student{
     private String studentNumber;
     private String studentName;
     private double studentResult;

     public Student (String aNumber, String aName){
         setStudentNumber(aNumber);
         setStudentName(aName);
         setStudentResult(0);
     }
     // The standard getter and setter method are define here.
}
Run Code Online (Sandbox Code Playgroud)

在构造函数中使用setter方法的目的是什么?并且使用setStudentResult(0),我们需要另一个实例变量吗?

java methods setter constructor

7
推荐指数
2
解决办法
2560
查看次数

如何使用C#中的setter覆盖getter-only属性?

更新: 此问题已经过修改,以使其更加清晰.下面的答案似乎反映出这种方法效果很好.希望这个问题可以帮助那些需要添加get或者添加set现有财产的人.


今天遇到一个问题,我需要get用a get和覆盖基类的-only属性set.目前的共识似乎是这是不可能的,但我认为我找到了一种方法.

一般的想法是创建一个new属性而不是直接override使用旧属性,然后我们通过调用新方法创建一个overrideget方法的桥接方法.

情况

这是一些无法修改的任意预先存在的类型结构的代码.

public abstract class A
{
    public abstract int X { get; }
}
public class B : A
{
    public override int X { get { return 0; } }
}
Run Code Online (Sandbox Code Playgroud)

问题

我们想编写这段代码,但不会编译.

public class C : B    // won't compile: X can't have a 'set' method
{
    private int _x;
    public override int X …
Run Code Online (Sandbox Code Playgroud)

c# getter setter overriding readonly

7
推荐指数
1
解决办法
5089
查看次数

在Java中,是否有更好的替代getter和setter方法?

Java类中常见的有许多getter和setter方法,每个方法对应一个数据模型类变量.我意识到很多IDE会为你创建这些,但是我试图避免这种混乱,并且在我的课程中没有所有这些方法.那么,有没有办法以类外的只读方式访问变量(就好像它是公共最终的),同时保留了类或子类内的写访问权限(就好像它是私有的或受保护的).

我提出的唯一伪解决方案是基类(或具有默认方法的接口),它具有get(String variableName)方法,然后通过反射获取类的字段并返回适当的字段.缺点是,为了工作,变量必须是公共的,所以只有按照惯例它才符合我的要求(在扩展/实现类中有我想要访问的变量,我只调用get方法在类之外,并没有实现set方法).我不喜欢的主要问题是,如果变量名称发生变化,get方法的调用者将不会导致编译器错误,因为变量名称只是一个硬编码的String.

谁有更好的主意?

java oop reflection getter setter

7
推荐指数
2
解决办法
4381
查看次数

在Java中的setter中抛出Exception是一个好习惯吗?

更具体地说,我想编写一个代码,IllegalArgumentException如果给定值为负,则抛出该代码.我应该在setter/constructor中包含此代码,还是应该在调用适当的方法时检查该值?(如:start(),init(),print()run().无论)

我的代码(简化):

public class LLUAlgorithm {

private int temperature;

public int getTemperature() {
    return temperature;
}

public void setTemperature(int temperature) {
    if (temperature < 0)
        throw new IllegalArgumentException("can't be smaller than 0.")
    this.temperature = temperature;
}

public void run() {
    ...
}   
Run Code Online (Sandbox Code Playgroud)

我不记得一个setter如上所述抛出异常的情况.但我很好奇它是好还是坏.

java oop getter setter getter-setter

7
推荐指数
1
解决办法
3653
查看次数

如何将计算属性的"setter"设置为private?

我知道如何将存储属性的"setter"设置为private(例如public private(set) var name: String = "John"),但是如何将计算属性的"setter"设置为private?在这种情况下,变量' age' 的'setter '.当我试图将关键字私有放在前面时set(newAge){},XCode会显示错误.那么可以将计算属性的"setter"设置为private吗?

public class Person {

    public private(set) var name: String = "John"

    var age: Int{
        get {
            return 10
        }
        set(newAge){ // how to set this setter to private so to restrict modification

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

getter setter swift

6
推荐指数
1
解决办法
1483
查看次数

为什么要在实体中拥有私人制定者

仍然习惯了Entity框架,但我已经看到了类似下面的代码,他们在Entity中拥有id的私有setter.

public int Id { get; private set; }
public string FirstName { get; set; }
public string LastName { get; set; }
Run Code Online (Sandbox Code Playgroud)

为什么有些人会有私人制定者.这个Id字段无论如何都是在数据库中自动生成的,这是因为它设置为私有?

另外,为什么我们需要私有构造函数和公共构造函数,如下所示?

private Emp() { }

public Emp(string name, string lastname)
{
    FirstName = firstname;
    LastName = lastname;       
}
Run Code Online (Sandbox Code Playgroud)

c# setter constructor entity-framework

6
推荐指数
2
解决办法
2970
查看次数