标签: getter-setter

Java中复杂getter的命名约定

我正在阅读这篇关于.NET中属性和方法的使用的MSDN 文章.它指出了为什么以及何时使用属性或方法.

属性意味着像字段一样使用,这意味着属性不应该在计算上复杂或产生副作用.

否则应该使用方法.

我问自己如何在Java中表达这种差异.

你有什么意见?

java naming-conventions getter-setter

2
推荐指数
1
解决办法
596
查看次数

除了一个集会外,我怎样才能隐藏"setter"?

我的另一个问题中,我已经提到了这个问题,但我认为值得将其分解为自己的问题,因为它并不真正依赖于我提到的其他场景.

无论如何 - 在Q上,不知道这是否可能.寻找解决方案/解决方法.

我有一个类库,只有POCO:

MyCompany.MyProject.Domain.POCO
Run Code Online (Sandbox Code Playgroud)

这个程序集有一个这样的POCO:

public class Post
{
   public int PostId { get; set; }
   public int Name { get; set; }
      ...
}
Run Code Online (Sandbox Code Playgroud)

现在,我有另一个类库,它是我的DAL/Repository,并使用Entity Framework 4.0进行持久化:

MyCompany.MyProject.Repositories
Run Code Online (Sandbox Code Playgroud)

这个程序集引用了POCO项目,因为它需要在POCO上执行CRUD操作(抓取DB对象,项目进入POCO,返回,以及修改POCO).

现在,我还有一个Web应用程序,它同时引用了POCO和Repository程序集.

如果我这样做:

somePOCO.PostId = 10;
Run Code Online (Sandbox Code Playgroud)

我得到一个SQLException,因为PostId是数据库中的IDENTITY字段,因此不应该明确设置.

有没有办法可以隐藏这些特殊属性的setter,以便只有存储库可以访问setter?

我想不出用常规辅助功能修饰符来做到这一点的方法(因为它们都不适合这种情况),你们能想到一个解决方法吗?

.net c# assemblies access-modifiers getter-setter

2
推荐指数
1
解决办法
915
查看次数

有很多吸气剂和安装者是个好主意吗?

在编写您打算开源的应用程序(在java中)时,拥有大量的getter和setter并使变量变为私有通常是一个好主意吗?更具体地说,如果那是一个Android应用程序,上述问题的答案是否仍然有效?

编辑:如果你们能给我一个具体的理由,为什么它更好,那将是非常棒的.

java android open-source getter-setter

2
推荐指数
1
解决办法
2642
查看次数

在c ++中编写setter和getter函数指针

我有带有函数指针的pagePtr类,如下所示

int (*FunPtr)(char*sz, unsigned int max_bytes, char* arg1, char* arg2, char* arg3,
char* arg4);//Function definition
Run Code Online (Sandbox Code Playgroud)

我在这样的构造函数中初始化它

pagePtr::pagePtr() : FunPtr(Null)
{
}
Run Code Online (Sandbox Code Playgroud)

现在我写了这样的setter,如果它是正确的我不知道

void pagePtr::setFunPtr(int(*ptr2Fun)(char*sz, unsigned int max_bytes,
char* arg1, char* arg2, char* arg3, char* arg4))
{
    FunPtr = ptr2Fun;
}
Run Code Online (Sandbox Code Playgroud)

我不知道怎么写一个getter(如果我做错了就设置setter).有什么建议?

c++ getter setter function-pointers getter-setter

2
推荐指数
1
解决办法
1541
查看次数

覆盖Objective-c中的setter.为什么检查是相等的参数

经常找到这样的自定义setter sintaxis:

- (void)setParentCatalog:(Catalog *)parentCatalog {
    if (_parentCatalog != parentCatalog) { //???
        _parentCatalog = parentCatalog;
        [self refresh];
    }
}
Run Code Online (Sandbox Code Playgroud)

我为什么要检查?

if (_parentCatalog != parentCatalog)
Run Code Online (Sandbox Code Playgroud)

objective-c getter-setter

2
推荐指数
1
解决办法
298
查看次数

Java:如何在一个类中创建一个私有字段Map不可变?

public class Hi {
    private final Map<String, String> map;
    public Map<String, String> getMap() {
        return map;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有这个Hi类,我希望map是不可变的.我还需要一个吸气剂.目前,另一个类可以从getter修改映射.我想返回一个地图副本来解决这个问题,但Map是一个接口,所以这是否意味着我必须进行getter调用:

return new HashMap<String,String>(map);
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以做到这一点,而不强制地图是一个哈希映射?我希望它能像以前一样保持同一级别.

java reference object immutability getter-setter

2
推荐指数
1
解决办法
1182
查看次数

使用宏绑定getter和setter

我的大部分应用程序状态都存储在一个大型复杂的地图中.出于这个问题的目的,我将使用一个简单的结构:

(def data
  {:a 1
   :b {:c {:d 3}}}) 
Run Code Online (Sandbox Code Playgroud)

我有大量的函数都遵循相同的模式:

(defn update-map
  [my-map val]
  (let [a (:a my-map)
        d (-> my-map :b :c :d)]
    (assoc-in
      (assoc my-map :a (+ a val))
      [:b :c :d] (+ d val))))
Run Code Online (Sandbox Code Playgroud)

我从地图中检索一个或多个值,执行一些计算,并使用更新的值创建新地图.这种方法存在两个问题:

  • 我在不同的函数定义中有很多重复的let绑定
  • 如果地图的架构发生了变化,我将会有很多代码要重构

我编写了一个宏来减少定义这些函数所需的样板代码.它的工作原理是查找预定义的getter和setter函数,并自动生成let块:

(def getters
  {'a #(:a %)
   'd #(-> % :b :c :d)})

(def setters
  {'a #(assoc % :a %2)
   'd #(assoc-in % [:b :c :d] %2)})

(defmacro def-map-fn
  [name [& args] [& fields] & code]
  (let [my-map 'my-map
        lookup #(reduce …
Run Code Online (Sandbox Code Playgroud)

macros clojure getter-setter

2
推荐指数
1
解决办法
513
查看次数

如何使用DocumentFIlter从另一个类设置JTextField的文本?

在下面的示例中,我创建了两个texField.在写入第一个文本时,如果用户输入的空格或数字,则应在另一个textField_1上显示消息.但是一旦用户输入数字/空格,它就会给出java.lang.NullPointerException.

public class NewDemo extends JFrame {
private JPanel p1;
private JTextField textField,textField_1;
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                NewDemo frame = new NewDemo();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}


public NewDemo() {
    setTitle("New Demo");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 500, 500);
    p1 = new JPanel();
    p1.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(p1);
    p1.setLayout(null);

    textField = new JTextField();
    textField.setBounds(70, 71, 86, 20);
    p1.add(textField);
    textField.setColumns(10);

    JLabel lblNewLabel = new JLabel(""); …
Run Code Online (Sandbox Code Playgroud)

java swing getter-setter documentfilter

2
推荐指数
1
解决办法
698
查看次数

是否建议使用一个返回与setter设置的值不同的getter?

我认为这对我的目的来说是实用的,但也有点令人困惑,因为人们可能希望获得与输入相同的输出.

@property
def value(self):
    return next(
    (option.key for option in self._options
     if option.id == self._value),
    None)

@value.setter
def value(self, value):
    idoption = None
    if isinstance(value, Option):
        idoption = next(
            (option.id for option in self._options
             if option.id == value.id), None)
    elif isinstance(value, int):
        idoption = next(
            itertools.chain(
                (option.id for option in self._options
                 if option.key == value),
                (option.id for option in self._options
                 if option.id == value)
            ), None)
    elif isinstance(value, str):
        idoption = next(
            (option.id for option in self._options
             if option.key == …
Run Code Online (Sandbox Code Playgroud)

python return-value getter-setter

2
推荐指数
1
解决办法
47
查看次数

什么是Javascript中的虚拟Getter和Setter?

虚拟获取器和设置器背后的想法是什么?我们为什么需要它们?

我在观看教程时正在编写以下代码:

login: async args => {
  const user = await User.findOne(args.email)
  if (!user) {
    throw new Error("Email doesn't exist!")
  }
  const isEqual = await bcrypt.compare(args.password, user.password)
  if (!isEqual) {
    throw new Error("Wrong Password!")
  }
  jwt.sign({userId: user.id})
}
Run Code Online (Sandbox Code Playgroud)

我在这里使用一个虚拟的吸气剂来提取,user.id但是我真的不明白这里发生了什么。

我在用猫鼬。

javascript getter-setter async-await

2
推荐指数
1
解决办法
41
查看次数