标签: instance-variables

使用关键字this和Class name访问静态实例变量之间的区别

我有以下java类.当我在构造函数中调用login方法时,我username使用类名访问静态实例变量,password使用关键字访问静态实例变量this.我的问题是这两种方法有什么区别?应该在什么情况下使用哪一个?

public class MyClass {
    private Main main;

    private static String username = "mylogindetails";

    private static String password = "mypassword";

    public MyClass(){
        this.main = new Main();
        this.main.login(MyClass.username, this.password);
    }


    public static void main(String args[]){
        MyClass myclass = new myclass();
    }
}
Run Code Online (Sandbox Code Playgroud)

java instance-variables this-keyword

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

实例变量在iOS应用程序中不保留值

我在我的身上宣布了这个伊娃

ViewController.h

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

{   
NSArray *sortedCountries;       
}

@property (nonatomic, retain) NSArray *sortedCountries;

@end
Run Code Online (Sandbox Code Playgroud)

在ViewController.m中,sortedCountries -(void)ViewDidLoad{}通过存储已排序的.plist的结果来完成它的工作 .

什么时候

-(UITableViewCell *)tableView:(UITableView *)tableView
        cellForRowAtIndexPath:(NSIndexPath *)indexPath {}
Run Code Online (Sandbox Code Playgroud)

在下面调用,sortedCountries返回 (null)

为什么sortedCountries的值不存在?我retain在第一个函数中添加了一个......我想我在这里缺少一个基本的Objective-C租户.

ViewController.m

#import "FirstViewController.h"

@implementation FirstViewController

@synthesize sortedCountries;

-(void)viewDidLoad  {

NSString *path = [[NSBundle mainBundle] pathForResource:@"countries" ofType:@"plist"];  
NSArray *countries = [NSArray arrayWithContentsOfFile:path];
NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES] autorelease];
NSArray *sortedCountries = [[countries sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]]retain];

}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}

-(NSInteger)tableView:(UITableView *)tableView …
Run Code Online (Sandbox Code Playgroud)

iphone scope objective-c instance-variables ios

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

在应用程序变量中存储CFC或在页面调用上实例化CFC是否更有效(性能)?

我正在开发一个ColdFusion动态网站.对于这个网站,每个CFC中都有很多CFC和许多功能. 将CFC实例存储在应用程序变量中,然后在每个页面加载时单独实例化每个CFC会更有效吗?

对于每个页面,最多调用2个单独的CFC.我也对如何在请求增加(压力)时影响性能感兴趣.

谢谢!

coldfusion performance cfc instance-variables

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

从AsyncTask中的活动访问实例变量

我有一个在一个活动上调用的AsyncTask(在一个单独的文件中).当我实例化AsyncTask时,我将活动作为参数发送.如何从AsyncTask的onPostExecute方法访问acitivity的实例变量?

谢谢!

android instance-variables instance android-asynctask

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

在C++中实例化实例变量的正确方法

我想问一下C++中哪里是实例化实例变量的正确位置?我认为它不应该在类声明中,但除了面向对象设计不佳之外,我不会看到任何缺点:

class A{ member m; };

我认为最好是这样的:

class A{ extern member m; };

但我不知道如何在没有像这样的指针的情况下实现它:

class A{ member* m };

A::A(){ m = new member; }

是否有"干净的解决方案"在堆栈上实现这一点(不使用指针)?

c++ stack instantiation instance-variables

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

Ruby和Rails:Metaprogramming变量成为类方法

我正在创建一个名为Configuration的模型,我有以下代码,我想通过使用元编程使其更具动态性.

在配置模型的数据库表中,我有以下数据.

---------------------------------------------------------
variable_name as string     |  value in text
                            |
company_name                |  MyCompany
welcome_text                |  Welcome to MyCompany's App!
email_order_text            |  You've just created an account with MyCompany.
year_since                  |  2012
----------------------------------------------------------

class Configuration  < ActiveRecord::Base

    #nothing here yet

end

----------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

目前,访问company_name的唯一方法是在rails控制台中执行以下操作:

configuration_company_name = Configuration.find_by_variable_name("company_name")
configuration_company_name.company_name

> "MyCompany"
Run Code Online (Sandbox Code Playgroud)

我认为这是一种不可接受的做事方式.首先,每次有人检查公司名称时,它都会访问数据库.我想如果我可以在应用程序启动时加载它并且不必再次访问它,因为它在内存中,那么它会更好.我怎样才能做更动态的事情,所以我可以像这样访问"MyCompany"这个值.

Configuration.company_name

> "MyCompany"
Run Code Online (Sandbox Code Playgroud)

这样做的原因是允许快速定制应用程序.

ruby model metaprogramming ruby-on-rails instance-variables

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

ruby样式和实例变量

我在很多代码中看到的东西:

class Foo
  attr_accessor :bar

  # lots of code omitted

  def baz
    'qux' if bar
  end
end
Run Code Online (Sandbox Code Playgroud)

baz方法的确切形式并不太重要 - 只是bar这里是对实例变量的getter方法的引用@bar,从实例的类中调用.我倾向于@bar明确地检索值.对此有何意见?我从来没有见过红宝石风格指南或类似的东西.我个人发现,做前者会使阅读和理解变得更加困难,特别是当课程超过几百行时.

编辑:

也许为了说明我认为这个设计的尴尬,让我们重新评估一个非常标准的初始化方法:

class Foo
  attr_accessor :bar, :qux

  def initialize(bar, qux)
    @bar = bar
    @qux = qux
  end
end
Run Code Online (Sandbox Code Playgroud)

如果我们使用setter方法,我们不能通过bar = ?类比来使用.相反,我们有:

class Foo
  attr_accessor :bar, :qux

  def initialize(bar, qux)
    self.bar = bar
    self.qux = qux
  end
end
Run Code Online (Sandbox Code Playgroud)

它失去了第一个优雅的一些.我们有一个更灵活的设计,因为我们现在可以自由地重写我们的setter方法并取消它attr_writer.但是我只是在风格方面有一些观点,感觉很像配置而不是相反,而Russ Olsen已经宣称设计'模式'不仅仅是Rails而是Ruby.

ruby instance-variables

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

为什么Java System.in.read()可以调用哪个不是静态方法

在java,java.lang.Systemclass中,它有一个in静态变量.
声明为:public static final InputStream in this
表示in是一个InputStream varibale.
但是我看到一些例子, System.in.read()用于读取输入.



怎么能这样做,read()InputStream中的方法不是静态方法,怎么能直接调用呢?据我了解,只有静态方法可以直接由类调用而无需创建实例.


read()声明: public abstract int read() throws IOException


谢谢Jon Skeet的回答,我还有一点不明白.

如果我调用System.in.read()哪个意味着我调用InputStream类方法read()

java.lang.System.in -----> java.io.InputStream ----> read()
Run Code Online (Sandbox Code Playgroud)
  1. 调用java.lang.System.in(这是一个静态变量),in是一个java.io.InputStream变量
  2. 调用行为就像调用PrintStream类一样.
  3. 这个过程就像调用: PrintStream.read()
  4. 但是我很难理解read()方法,它不是一个静态方法,因为它不应该直接调用.
  5. 它应该像这样调用:

    PrintStream rd = new PrintStream(); int c = rd.read();

因为read()应该由实例调用.read()声明:public abstract int read()抛出IOException

PS:我试试这段代码不起作用:

InputStream rd = new InputStream();
        int c = rd.read();
        System.out.println(c);
Run Code Online (Sandbox Code Playgroud)

但不知道为什么.

参考:http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html

java static-methods instance-variables system.in

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

带有前面冒号的Ruby实例变量是什么意思(:@name)?

我正在研究Ruby Koans,并提出了问题#193:

  class Dog2
    def set_name(a_name)
      @name = a_name
    end
  end

  def test_instance_variables_can_be_set_by_assigning_to_them
    fido = Dog2.new
    assert_equal [], fido.instance_variables

    fido.set_name("Fido")
    assert_equal [___], fido.instance_variables
  end
Run Code Online (Sandbox Code Playgroud)

答案是"assert_equal : @name,fido.instance_variables".我知道冒号(:)表示符号,atsign(@)表示实例变量.但是,我还没有找到关于结合冒号和atsign意味着什么的文档.

它是什么意思,它是如何使用的?谢谢!

ruby symbols instance-variables

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

程序的最后一点我无法工作.(构造)

这是我的程序的最后一个代码部分,我不能使它工作:

问题是当我打印出来时,程序使用words实例变量.

如何更改代码,以便我可以在下面的main方法中使用wordList?这是我必须在构造函数中更改的内容吗?

import java.util.Arrays;

public class Sentence {
private String[] words = {""}; // My private instance variable. 
//Supposed to hold  the words in wordList below.

public Sentence(String[] words){ // Constructor which I'm pretty sure is not 100% right
//Elements of array will be words of sentence. 
}

public String shortest() {
    String shortest = "";

    for (int i = 0; i < words.length; i++) {
        if(shortest.isEmpty())
            shortest = words[i];
        if (shortest.length() > words[i].length())
            shortest = words[i]; …
Run Code Online (Sandbox Code Playgroud)

java constructor instance-variables

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